AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Prism Tag-Werte von Items in TMS Komponente auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Tag-Werte von Items in TMS Komponente auslesen

Ein Thema von needatip · begonnen am 29. Mai 2007 · letzter Beitrag vom 29. Mai 2007
Antwort Antwort
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
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Tag-Werte von Items in TMS Komponente auslesen

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

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

Re: Tag-Werte von Items in TMS Komponente auslesen

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


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 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