Hi
Nun ja, ich weiß jetzt nicht so recht, was du sehen willst, daher mal meinen Ansatz:
Ich habe eine Tabelle, in denen Panels beschrieben sind
also
ID - Für die eindeutige Zuordnnung in der
DB
PN_Name - PanelName
PN_Top - y-Position auf der Form
PN_Left -x-Position auf der Form
PN_Width - Weite
PN_Heigth- Höhe
PN_Color - Farbe
usw. also alles, was über das Panel wichtig ist....
Nun kommt die Tabelle der Buttons
ID- für die eindeutige Zuordnung in der
DB
BT_Name - ButtonName
BT_Top - y-Position auf dem Panel !!
BT_Left - x-Position auf dem Panel !!
usw... auch wieder alles, was zum Button gehört
zusätzlich einen Zeiger auf den ID des Panels
Bt_Parent_Id vom Typ Integer oder LongInt
Nun die Installation
Ich schreibe mir immer einen SQLString, den ich dann per Add der
Query zuweise
Delphi-Quellcode:
MySQLStr:='
Select * From PanelTabelle';
MyPanelQuery. Close;
MyPanelQuery.SQL.Clear;
MyPanelQuery.SQL.Add(MySQLStr);
// ist mit Haltepunkt immer leicht zu kontrollieren
MyPanelQuery.Open;
// auch wenns eine richtig umfangreiche SQL -Abfrage ist
If MyPanelQuery.RecordCount>0
then
Begin
MyPanelQuery.First;
For i:=MyPanelQuery.RecordCount-1
do
Begin
......
// Installation der Panels
MySQLStr:='
Select * From ButtonTabelle';
MySQLStr:=MySQLStr+'
Where (Bt_Parent_Id=+''
'+IntToStr(MyPanelQuery['
Ident'])+'
''
)';
MyButtonQuery. Close;
MyButtonQuery.SQL.Clear;
MyButtonQuery.SQL.Add(MySQLStr);
MyButtonQuery.Open;
If MyButtonQuery.RecordCount>0
then
begin
MyButtonQuery.First;
For j :=0
to MyButtonQuery.RecordCount-1
do
begin
......
// Installation der Buttons
MyButtonQuery.Next;
// nicht vergessen
end;
end;
MyPanelQuery.Next;
end;
end;
Natürlich kannst du auch auf MyPanel['Panel_Name'] suchen und den BT_Parent_Id entsprechend mit dem Panelnamen belegen. Kann aber leicht ins Auge gehen, wenn die Zugriffe mal per Hand eingegeben werden und bspw. Leerzeichen im Namen stehen...
Hoffe, es hilft dir
Gruß oldmax
Noch ist mein Rechner mir zu Diensten.... ansonsten habe ich die Macht ihn zu vernichten !