Einzelnen Beitrag anzeigen

oldmax

Registriert seit: 27. Apr 2006
Ort: Gieboldehausen
167 Beiträge
 
#3

Re: Panels und Buttons mit sql generieren

  Alt 20. Mär 2008, 12:02
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 !
  Mit Zitat antworten Zitat