Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Prism Tag-Werte von Items in TMS Komponente auslesen (https://www.delphipraxis.net/92963-tag-werte-von-items-tms-komponente-auslesen.html)

needatip 29. Mai 2007 14:14


Tag-Werte von Items in TMS Komponente auslesen
 
Hallo,
ich möchte die Tag-Werte der SideNavBar-Komponente von TMS im Item_Click Ereignis auslesen.

Das Zuordnen der Tag-Werte geschieht im Page_Load Ereignis in der 6. Zeile von unten.
Das funktioniert auch einwandfrei.
Es ist nur eine SideNavBar auf dem Formular.
Erzeugt werden dann div. Panels mit div. Items.
Delphi-Quellcode:
procedure TWebForm1.Page_Load(sender: System.object; e: System.EventArgs);
var
  HKDataRow, WGDataRow: DataRow;
  MyRelation: DataRelation;
  objCommand: OleDbCommand;
  DA: OleDbDataAdapter;
begin
  if not IsPostBack then
  begin
    objCommand := OleDbCommand.Create;
    objCommand.Connection := OleDbConnection1;
    DA := OleDbDataAdapter.Create;
    objCommand.CommandText := 'SELECT * FROM HAUPTKATEGORIEN';
    DA.SelectCommand := objCommand;
  // DataSet mit Hauptkategorie-Tabelle füllen
    DA.Fill(DS1, 'HKTable');
    objCommand.CommandText := 'SELECT * FROM WGRUPPEN';
    DA.SelectCommand := objCommand;
  // DataSet mit Warengruppen-Tabelle füllen
    DA.Fill(DS1, 'WGTable');
  // Beziehung von Warengruppen zu Hauptkategorie-Tabelle erstellen
  // Schlüssel-Werte - Hauptkegorien/GruppenNr --> WGruppen/Obergruppe
    MyRelation := DataRelation.Create('rel', DS1.Tables['HKTable'].Columns['GRUPPENNR'], DS1.Tables['WGTable'].Columns['OBERGRUPPE'], false);
    DS1.Relations.Add(MyRelation);
  // Alle Panels löschen
    SideNavBar1.Panels.Clear;
  // Alle Datensätze der Hauptkategorie-Tabelle durchlaufen
    for HKDataRow in DS1.Tables['HKTable'].Rows do
    begin
      np := TMSWebControls.SideNavPanel.Create; // Panel erzeugen
      np.Text := HKDataRow.Item[1].ToString; // Panel Text nach Datenfeld benennen
      np.IsExpanded := false;
      SideNavBar1.Panels.Add(np); // Panel hinzufügen
  // Alle Kind-Werte der Hauptkategorie-Tabelle abrufen
      for WGDataRow in HKDataRow.GetChildRows('rel') do
      begin
        ni := TMSWebControls.SideNavItem.Create; //Item erzeugen
        ni.Tag := StrToInt(WGDataRow.Item[0].ToString); //Warengruppen-ID in Tag speichern
        np.Items.AddChild(ni, WGDataRow.Item[1].ToString + ni.Tag.ToString); // Item zum Panel hinzufügen
      end;
    end;
  end;
end;
Nun sollte man auf den Tag-Wert beim Item_Click Ereignis zurückgreifen können.
Auf Nachfrage bei TMS haben die mir die Antwort mit einem C# Beispiel genannt.

Zitat:

You can do this using code similar to:
protected void SideNavBar1_ItemClick(object sender, TMSWebControls.SideNavBarEventArgs e)
{
SideNavPanel snp = (SideNavPanel)SideNavBar1.Panels[e.PanelIndex];
SideNavItem sni = (SideNavItem)snp.Items[e.ItemIndex];
label1.Text = sni.Tag;
}
Kann mir jemand helfen dies in Delphi umzuschreiben? C# ist nicht meine Stärke!
Ich habs so versucht:
Delphi-Quellcode:
procedure TWebForm1.SideNavBar1_ItemClick(sender: System.Object; e: TMSWebControls.SideNavBarEventArgs);
var
  snp : SideNavPanel;
  sni : SideNavItem;
begin
  snp := SideNavPanel.Create;
  sni := SideNavItem.Create;
  snp := SideNavBar1.Panels[e.PanelIndex];
  sni := SideNavItem(snp.Items[e.ItemIndex]);
  Label1.Text := sni.Tag.ToString;
end;
Da bekomm ich aber den Compiler-Fehler: Inkompatible Typen SideNavPanel und Object!
Was mache ich falsch ?

hsg 29. Mai 2007 14:34

Re: Tag-Werte von Items in TMS Komponente auslesen
 
Delphi-Quellcode:
procedure TWebForm1.SideNavBar1_ItemClick(sender: System.Object; e: TMSWebControls.SideNavBarEventArgs);
var
  snp : SideNavPanel;
  sni : SideNavItem;
begin
  snp := SideNavPanel(SideNavBar1.Panels[e.PanelIndex]);
  sni := SideNavItem(snp.Items[e.ItemIndex]);
  Label1.Text := sni.Tag.ToString;
end;

Die beiden creates sind von dir erzeugte Speicherlöcher und nicht erforderlich.
SideNavBar1.Panels[e.PanelIndex] liefert dir nur ein TObject, das es vom Typ SideNavPanel ist, verrätst du dem Compiler durch den expliziten Type-Cast

needatip 29. Mai 2007 14:47

Re: Tag-Werte von Items in TMS Komponente auslesen
 
Ok, hab ich versucht.
Das Label1, das auch auf meinem Formular liegt, zeigt mir aber jetzt beim Klicken auf ein Item immer 0 an.
Hängt das mit dem Postback zusammen oder wird das Tag nicht richtig ausgelesen?
Also wie gesagt: ich hab nur die SideNavBar und ein Label-Element auf meinem Formular.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 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