PDA

Ver la Versión Completa : Nuevo en Delphi


compuin
31-10-2016, 00:10:37
Buenos dias a todos,

Soy nuevo con Delphi y estoy tratando la version 6. Me gustaria orientacion en como puedo crear 1 formulario que llame un procedimiento en un 2do formulario.

A pesar de intenralo me arroja un error de 'Undeclare identifier'

Aca el codigo

Forma Nro 1
-----------------------

unit Forma1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls,
Forma2;

type
TForma1 = class(TForm)
Image1: TImage;


private
{ Private declarations }
public
{ Public declarations }
procedure FormCreate(Sender: TObject);
end;

var
Forma1: TForma1;

implementation

{$R *.dfm}

procedure TForma1.FormCreate(Sender: TObject);
begin
rueda;
end;

end.


Forma Nro 2

-----------------------------

unit Forma2;

interface

procedure rueda;

implementation

uses Forma1;

procedure rueda;
begin
showmessage('funciona');
end;

end.

BDWONG
31-10-2016, 00:38:10
El uses debe ir en la Unit Forma1

var
Form1: TForm1;

implementation

{$R *.dfm}

uses Forma2;



procedure TForm1.FormCreate(Sender: TObject);
begin
Rueda();
end;

end.

compuin
31-10-2016, 00:45:06
Gracias

Hice la correccion pero en la Unit 2 me sigue apareciendo una linea roja sobre la funcion showmessage

unit Forma2;

interface

procedure rueda;

implementation


procedure rueda;
begin
showmessage('funciona');
end;

end.

Aparentemente algo no esta bien en el llamado de la showmessage

Atento a sus comentarios

BDWONG
31-10-2016, 01:16:26
Necistar importar la Unit Dialogs para mas informacion revisa el enlace
http://www.delphibasics.co.uk/RTL.asp?Name=ShowMessage&ExpandCode1=Yes#Ex1


unit Forma2;

interface
uses
Dialogs;

procedure rueda;

implementation


procedure rueda;
begin
showmessage('funciona');
end;

end.

compuin
31-10-2016, 01:20:08
Mil gracias amigo...lo acabo de probar y funciona


Saludos

compuin
31-10-2016, 01:33:17
Cambiando un poco ahora el showmessage por una Imagen en el Form1.

Necesito que el Form1 al arrancar me muestre en un rectangulo y la funcion que lo hace esta en la Unit2

Algo asi,

unit Forma1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
Forma1 = class(TForm)
Image1: TImage;
Button1: TButton;
Button2: TButton;

procedure FormCreate(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Forma1: TForma1;

implementation

uses
Unit2;

{$R *.dfm}


procedure TForma1.FormCreate(Sender: TObject);
begin
Rueda;
end;

end.

////---------------------------------------------

Unit Forma2;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls, Math, StdCtrls, Buttons;

procedure rueda;

implementation

procedure rueda;
begin
with TForma1.Image1.Canvas do
begin
Pen.Color := clNavy;
Pen.Width := 5;
Brush.Color := clYellow;
Brush.Style := bsDiagCross;
Ellipse( 160, 10, 260, 110 );
end;
end;

end.


Solo cambie el showmessage pero no genera la rueda,,,sigue el mismo error de Undefined identifier

Casimiro Notevi
31-10-2016, 01:59:02
1:
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias por tu colaboración :)

2:
Recuerda poner los tags al código fuente, ejemplo:

http://www.clubdelphi.com/images/UtilizarTAGs.png

Gracias :)

3:
No olvides poner títulos descriptivos a tus preguntas, "Nuevo en Delphi" no es un título que describa el problema que quieres resolver. Gracias.

BDWONG
31-10-2016, 02:02:04
Hola te aconsejo que cuando tengas dudas diferentes no dudes en abrir otro hilo ya que se mantiene el orden.
Bueno con respecto a tu duda, una forma simple de hacerlo es pasarle la referencia del objeto TImage por parametro a la funcion Rueda
unit Forma2;

interface
uses
ExtCtrls,Graphics;

procedure Rueda(var Imagen:TImage);

implementation

procedure Rueda(var Imagen:TImage);
begin
Imagen.Canvas.Pen.Color:=clNavy;
Imagen.Canvas.Pen.Width:=5;
Imagen.Canvas.Brush.Color:=clYellow;
Imagen.Canvas.Brush.Style:=bsDiagCross;
Imagen.Canvas.Ellipse(160,10,260,110);
end;

end.

Ya habiendole especificado el parametro hay que llamar a la funcion desdel el formulario principal

Rueda(Self.Image1);

La palabra Self hace referencia al formulario Forma1 pero si te confunde este concepto puede hacer esto

Rueda(Form1.Image1);

Edito: Tambien simplemente basta con poner
Rueda(Image1);


En mi caso mi formulario se llama Form1, por ultimo evitar usar WITH.

ScreenShot
https://i.gyazo.com/fe2fab073f1db50d282da07488a9853d.png

Saludos....

compuin
31-10-2016, 02:07:02
Muchisimas gracias.

Logro funcionar

movorack
31-10-2016, 14:15:21
Recuerda que puedes obtener una licencia starter en la cual puedes instalar componentes de terceros

https://www.embarcadero.com/products/delphi/starter/promotional-download

compuin
31-10-2016, 14:19:03
GRacias,

Y cuales son las limitaciones con esa version ?

Yo tengo Delphi 6 EE y con esa estoy comenzando a trabajar

movorack
31-10-2016, 15:56:25
Delphi Starter Edition (https://www.embarcadero.com/cn/products/delphi/starter)

Las diferencias las puedes ver acá (https://www.embarcadero.com/docs/Delphi-Feature-Matrix.pdf)

Hay muchas diferencias con respecto a una Enterprise pero en este caso obtendrás una licencia de la última versión del IDE. Con sus limitaciones ya que es grátis pero bastante funcional para muchos.

compuin
31-10-2016, 15:58:02
Gracias,

Con esta licencia starter yo puedo crear una aplicacion y comercializarla?

movorack
31-10-2016, 16:14:42
Starter Edition FAQs (https://www.embarcadero.com/products/delphi/starter-faq)

Can I sell my apps or components with the Starter edition?
Yes. You may sell any apps or components developed with the Starter edition under the Starter license until your annual license or service revenue exceeds US $1,000 or local currency equivalent. If your annual license or service revenue generated from the output of the Starter edition exceeds US $1,000 or local currency equivalent, then a Professional edition or higher license is required to be purchased. Special pricing for Starter upgrades to Professional, Enterprise and Architect editions is available specifically for this purpose.

What is the Starter edition license?
The Starter edition license is an "indie" or independent developer style license. Think indie music, indie artist, indie films, etc. The indie style Starter license allows for freeware and limited "for profit" commercial use. The license is designed specifically as a low cost solution for hobbyists, students, and independent developers to be able to get started building and distributing apps, including commercially for profit, without a significant up-front investment. It is modeled after the self-publishing music and literature models and has become popular within the game and mobile development tools market.