Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Outlookbar hierarchisch mit Daten füllen (https://www.delphipraxis.net/83883-outlookbar-hierarchisch-mit-daten-fuellen.html)

needatip 7. Jan 2007 22:16


Outlookbar hierarchisch mit Daten füllen
 
Ich möchte eine JVOutlookbar mit den Werten aus einer Datenbank füllen.
Und zwar soll diese nach Jahreszahlen geordnet erscheinen.
Die Jahreszahlen sollen dabei die Pages darstellen und das Feld Name die untergeordneten Buttons.

Die Tabelle hat in etwa folgenden Aufbau:
Code:
JAHR | NAME
1999 | Name1
1999 | Name2
2000 | Name3
2000 | Name4
2000 | Name5
2000 | Name6
2001 | Name7
2002 | Name8
2002 | Name9
2002 | Name10
d. h. ich bestimme zuerst die Jahreszahlen per SQL Script.
SQL-Code:
SELECT DISTINCT JAHR FROM TABELLE1
Diese ordne ich dann den einzelnen 'Pages' zu:

Delphi-Quellcode:
procedure TfmMain.FormCreate(Sender: TObject);
var NewBarPage : TJVOutlookBarPage;
begin
  with MyQuery do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT DISTINCT JAHR AS ADATUM, NAME FROM TABELLE1');
    Open;
    First;
    while not EOF do
    begin
      NewBarPage := JvOutlookBar1.Pages.Add;
      NewBarPage.Caption := FieldByName('ADATUM').Text;
      Next;
    end;
  end;
end;
so weit so gut, jetzt hab ich bereits die einzelnen Pages mit den Jahreszahlen.
wie kann ich nun für die einzelnen 'Pages' die untergeordneten Buttons mit den entsprechenden Namen erzeugen?

Aussehen soll das ganze dann in etwa so:

Code:
1999
  Name1
  Name2
2000
  Name3
  Name4
  Name5
  Name6
2001
  Name7
2002
  Name8
  Name9
  Name10
usw.

wer kann mir weiterhelfen, wie ich die Outlookbar richtig fülle?

marabu 8. Jan 2007 10:51

Re: Outlookbar hierarchisch mit Daten füllen
 
Hallo,

ich würde es so versuchen:

Delphi-Quellcode:
procedure TDemoFrom.FormCreate(Sender: TObject);
var
  page: TJvOutlookBarPage;
  button: TJvOutlookBarButton;
begin
  with Query do
  begin
    SQL.Text := 'SELECT ID, JAHR, NAME FROM JN ORDER BY JAHR, NAME';
    Open;
    page := nil;
    while not Eof do
    begin
      if not Assigned(page)
      or not SameText(page.Caption, FieldByName('JAHR').AsString) then
      begin
        page := OutlookBar.Pages.Add;
        page.Caption := FieldByName('JAHR').Text;
      end;
      with page.Buttons.Add do
      begin
        Caption := FieldByName('NAME').Text;
        // Tag := FieldByName('ID').AsInteger;
      end;
      Next;
    end;
    Close;
  end;
end;
Grüße vom marabu

needatip 8. Jan 2007 15:02

Re: Outlookbar hierarchisch mit Daten füllen
 
:hello:
Du bist der beste !!!!
Supi - funktioniert einwandfrei.

Nur wie kann ich nun auf den Klick eines Buttons den entsprechenden Datensatz auswählen?
War das die Zeile mit 'Tag' mit der man dann auf das Tag zurückgreifen kann ???

marabu 8. Jan 2007 15:18

Re: Outlookbar hierarchisch mit Daten füllen
 
Du hast es genau richtig erkannt.

Freundliche Grüße

needatip 9. Jan 2007 08:16

Re: Outlookbar hierarchisch mit Daten füllen
 
Wie greife ich nun auf die Tags von einer anderen Prozedur zu?
Man ich kriegs einfach nicht gebacken !

needatip 9. Jan 2007 09:09

Re: Outlookbar hierarchisch mit Daten füllen
 
Sorry, ich glaub ich habs:

Delphi-Quellcode:
procedure TfmMain.JvOutlookBar1ButtonClick(Sender: TObject; Index: Integer);
begin
  ShowMessage(IntToStr(JvOutlookBar1.ActivePage.Buttons[Index].Tag));
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz