Einzelnen Beitrag anzeigen

needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#1

Tag-Werte von Items in TMS Komponente auslesen

  Alt 29. Mai 2007, 15:14
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 ?
  Mit Zitat antworten Zitat