da immer wieder Fragen bzgl. diesem Thema auftauchen
hier ein kleines(winziges) Tutorial
weil ich noch nie eins gemacht habe kann es sich natürlich mit keinem anderen hier messen
aber ich hoffe einigen Usern zu helfen
Delphi-Quellcode:
unit Unit1;
{BY NICO MÜLLER
für die DP User}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, ComCtrls, StdCtrls;
type
TForm1 =
class(TForm)
PageControl1: TPageControl;
Button1: TButton;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
Auswahl : Integer = -1;
// gewünschtes Feld
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Stringgrid: TStringgrid;
// startname : TComponent
i : Integer;
// Zählvariable
begin
{ Wir gehen davon aus das Pagecontrol1(zusätzliches 2 Komponente)
sich am Form1 befindet und das 3 Tabsheets drauf sind
(Rechtsklick auf das oageCOntrol1 "neue Seite"}
for i := 0
to PageControl1.PageCount-1
do // von 1 bis zur Anzahl der Tabheets zählen
begin
Stringgrid:= TStringgrid.Create(self);
// neue Komponenten erzeugen
// dann alles waste brauchst(felder ins stringgrid etc)
Stringgrid.Parent := PageControl1.Pages[i];
{ wo es sich befinden soll, hier ists die jeweilige aktuelle Seite}
stringgrid.
Name := '
St_' + intToStr(i);
//neuen namen geben
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
text :
String;
// der Text der Eingegeben soll
begin
Auswahl := StrToInt(Inputbox('
Index angeben','
Bitte den' +
'
Index der gewünschten Tabelle eingeben(0-2)',
IntToStr(Auswahl+1)));
// Auswahl wird gelsesen
Text := Inputbox('
Text angeben','
Bitte ´den Text der eingetragen werden soll eingeben',
'
TEST');
// Text wird eingelesen
with TStringgrid(FindComponent('
St_' + IntToStr(Auswahl)))
do
Cells[1,1] := Text;
// die "ST_<Auswahl>" wird bei [1,1](links oben) mit dem text beschriftet
end;
end.
Nachtrag von
SirThornberry:
Zitat:
Find Komponent ist nicht gerade die schnellste Variante, deswegen wäre es sinnvoller einmal mit Findkomponent alle Stringgrids zu suchen und in ein Array zu packen. Bzw. wäre es noch sinnvoller sie gleich bei der Erstellung in ein Array zu packen.
Source:
Delphi-Quellcode:
MyStringgrids: Array of TStringGrid;
[...]
var
Stringgrid: TStringgrid;
i : Integer;
begin
for i := 0 to PageControl1.PageCount-1 do // von 1 bis zur Anzahl der Tabheets zählen
begin
Stringgrid:= TStringgrid.Create(self);
Stringgrid.Parent := PageControl1.Pages[i];
setlength(MyStringgrids, length(Stringgrids)+1);
MyStringgrids[length(MyStringgrids)-1] := Stringgrid; //somit kann man später per "MyStringgrids[x]" drauf zugreifen
Die Findkomponentvariante sollte man nur verwenden wenn sich die Edits, Stringgrids oder worum es sich auch immer handelt bereits auf dem Form befinden und man diese dann später in einem Array ansprechen will
Source:
Delphi-Quellcode:
MyEdits: Array of TEdit;
[...]
var
i: Integer;
LEdit: TEdit;
begin
setlength(MyEdits, 20);
for i := 1 to 20 do
begin
MyEdits[i-1] := TEdit(FindComponent('Edit' + inttostr(i)));
end;
end;
Fragen bitte an "s.mueller@inode.at" --> ODER per ICQ an "291515392"
--> ich denke es ist die richtige Sparte
positive Kritik und Hilfen zur Verbesserung sind gerne erwünscht
mfg
Nicodius
[edit=Chakotay1308]Nachtrag von SirThornberry. Mfg, Chakotay1308[/edit]
[edit=Matze]Code formatiert. Mfg, Matze[/edit]
[edit=flomei]Wir "räumen auf", daher Titel geändert... Mfg, flomei[/edit]