Delphi saját típus Hogyan tegyek bele pl. Edit-et?
Létrehoztam egy saját típust.
TSor = Class
Nev: TEdit;
Info: TLabel;
Gomb: TButton;
ID: integer;
end;
var
Tagok: array[1..10] of TSor;
TagSzam: integer = 0;
És mikor rákattintok "Az új tag" gombra akkor szeretném, ha megjelenne egy új sor ami tartalmazza, a saját Edit, Label, Button komponenseit.
Tagok[TagSzam] := TSor.Create;
Ez még megy, de ennél már hibát ír ki:
Tagok[TagSzam].Nev.Top := 50 + ID * 20;
Eléje gondolom kéne egy Tagok[TagSzam].Nev.Create;
De a Create vár egy paramétert, oda mi kéne??
Esetleg így: Tagok[TagSzam].Nev.Create(Self);?
Anno csináltam egy ilyen Strigulázó programot Lazarussal, de én ott egy rekord típust hoztam létre egy GroupBoxxal, illetve abba került bele két Button meg egy Edit.
Itt a kódja, ha érdekel: [link]
Időközben én is megtaláltam ezt a Self paramétert, de ígysem működik. Azt írja, hogy Access violation at...
Majd áttanulmányozom a tiedet, hátha az segít.
Kösz szépen!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TSor = class(TObject)
Nev: TEdit;
Info: TLabel;
Gomb: TButton;
ID: integer;
constructor Create; virtual;
end;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Tagok: array[1..10] of TSor;
TagSzam: integer = 0;
implementation
{$R *.dfm}
constructor TSor.Create;
begin
Nev := TEdit.Create(nil);
Nev.Parent := Form1;
Info := TLabel.Create(nil);
Info.Parent := Form1;
Gomb := TButton.Create(nil);
Gomb.Parent := Form1;
ID := 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Tagszam < 10 then
begin
Inc(TagSzam);
Tagok[TagSzam] := TSor.Create;
Tagok[TagSzam].ID := TagSzam;
Tagok[TagSzam].Nev.Top := 50 + Tagok[TagSzam].ID * 30 ;
Tagok[TagSzam].Nev.Left := 100;
Tagok[TagSzam].Nev.Visible := true;
Tagok[TagSzam].Nev.Name := 'edtTagok' + IntToStr(Tagok[TagSzam].ID);
Tagok[TagSzam].Nev.Text := Tagok[TagSzam].Nev.Name;
Tagok[TagSzam].Gomb.Top := 50 + Tagok[TagSzam].ID * 30 ;
Tagok[TagSzam].Gomb.Left := 250;
Tagok[TagSzam].Gomb.Visible := true;
Tagok[TagSzam].Gomb.Name := 'btnTagok' + IntToStr(Tagok[TagSzam].ID);
Tagok[TagSzam].Gomb.Caption := Tagok[TagSzam].Gomb.Name;
Tagok[TagSzam].Info.Top := 50 + Tagok[TagSzam].ID * 30 ;
Tagok[TagSzam].Info.Left := 350;
Tagok[TagSzam].Info.Visible := true;
Tagok[TagSzam].Info.Name := 'lblTagok' + IntToStr(Tagok[TagSzam].ID);
Tagok[TagSzam].Info.Caption := Tagok[TagSzam].Info.Name;
end;
end;
end.
Ha nem a Form1-re akarod helyezni őket akkor:
type
TSor = class(TObject)
Nev: TEdit;
Info: TLabel;
Gomb: TButton;
ID: integer;
constructor Create(myParent : TWincontrol); virtual;
end;
...
constructor TSor.Create(myParent : TWincontrol);
begin
Nev := TEdit.Create(nil);
Nev.Parent := myParent;
Info := TLabel.Create(nil);
Info.Parent := myParent;
Gomb := TButton.Create(nil);
Gomb.Parent := myParent;
ID := 0;
end;
....
Tagok[TagSzam] := TSor.Create(Form1.Panel1);
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!