![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: Delphi, IBX
TreeView mit Anzahl der Datensätze im Text
Hallo,
habe einen TreeView erstellt für meine Datenbank. Jetzt möchte ich gerne die Anzahl der Datensätze im Text anzeigen lassen. -- Kunden (74) -- Aufträge (25) Wie kann ich das machen? Hat da jemand einen Tip? Gruß DevStar |
Re: TreeView mit Anzahl der Datensätze im Text
Einfach den text der Node dementsprechend erweitern. Erstellst du diese manuell oder hast verwendest du ein TDBTreeView
|
Re: TreeView mit Anzahl der Datensätze im Text
Hier mal ein Schnellschuss...
Delphi-Quellcode:
Aufruf:
function addChildCount(Node:TTreeNode):integer;
begin Result:=0; if assigned(Node) then begin repeat if Node.HasChildren then Node.Text:=Node.Text + ' (' + inttostr(addChildCount(Node.getFirstChild)) + ')'; inc(Result); Node:=Node.getNextSibling; until not assigned(Node); end; end;
Delphi-Quellcode:
addChildCount(TreeView.Items.GetFirstNode);
|
Re: TreeView mit Anzahl der Datensätze im Text
Hallo, vielen lieben dank erstmal.
Es ist kein dbTreeView. Habe es selber erstellt zur Laufzeit. Funktioniert soweit ganz gut. Nur kann ich meine Datensätze nicht mehr auswählen, da ich für den SELECT-Befehl den Node.Text abgreife:
Delphi-Quellcode:
Ich müsste also eine Funktion finden die dien Klammerwert wieder entfernt. "(xx)"
Node := TreeView1.Selected;
sSQL_Table := 'SELECT * FROM VIEW_KUNDEN '; sSQL_Bedinung := 'WHERE KOSTENBEZEICHNUNG = ''' + Node.Parent.Text + ''' ' + 'AND KASSENNAME = ''' + Node.Text + ''' ' + 'ORDER BY NUMMER'; sSQL := sSQL_Table + sSQL_Bedinung; Das geht aber nicht, weil ich ja nicht weiß wieviel Zeichen xx haben wird. Sonst müsste das doch mit Pos und Delete gehen?? |
Re: TreeView mit Anzahl der Datensätze im Text
Dafür würde ich den Tag nehmen
|
Re: TreeView mit Anzahl der Datensätze im Text
Zitat:
|
Re: TreeView mit Anzahl der Datensätze im Text
Ich würde den PK-Wert in der Eigenschaft Tag des Knotens ablegen
|
Re: TreeView mit Anzahl der Datensätze im Text
Hier noch ein anderer Vorschlag...
Delphi-Quellcode:
function DeleteCount(Text:string):string;
var Posi:integer; begin Result:=Text; repeat Posi:=pos(' (', Text); if Posi > 0 then delete(Text, 1, Posi); until Posi = 0; delete(Result, length(Result) - length(Text), length(Result)); end; |
Re: TreeView mit Anzahl der Datensätze im Text
Wobei ich eine Bezeichnung niemals als Schlüsselkriterium verwenden würde.
|
Re: TreeView mit Anzahl der Datensätze im Text
Zitat:
Zu Omata's Funktion: Diese liefert mir leider nur die ersten beiden Zeichen des Textes. Edit: Muss nochmal nerven. Gibt es eine Möglichkeit den Klammerwert in einer anderen Farbe dazustellen? So wie in IBExpert. |
Re: TreeView mit Anzahl der Datensätze im Text
Das sollte so eigentlich gehen...
Delphi-Quellcode:
Aufruf:
function DeleteCount(Text:string):string;
var Posi:integer; begin Result:=Text; repeat Posi:=pos(' (', Text); if Posi > 0 then delete(Text, 1, Posi); until Posi = 0; delete(Result, length(Result) - length(Text), length(Result)); end; function addChildCount(Node:TTreeNode):integer; begin Result:=0; if assigned(Node) then begin repeat if Node.HasChildren then Node.Text:=DeleteCount(Node.Text) + ' (' + inttostr(addChildCount(Node.getFirstChild)) + ')'; inc(Result); Node:=Node.getNextSibling; until not assigned(Node); end; end;
Delphi-Quellcode:
addChildCount(TreeView.Items.GetFirstNode);
|
Re: TreeView mit Anzahl der Datensätze im Text
Zitat:
Super.Danke. Ihr seit die besten. Jetzt muss ich den Klammerwert nur noch in blau darstellen und ich bin glücklich. Danke nochmal. |
Re: TreeView mit Anzahl der Datensätze im Text
Hier mal ein Vorschlag...
Delphi-Quellcode:
TForm = class(TForm)
: private { Private-Deklarationen } FBitmap:TBitmap; : : procedure TForm.FormCreate(Sender: TObject); begin FBitmap:=TBitmap.Create; end; procedure TForm.FormDestroy(Sender: TObject); begin FBitmap.free; end; procedure TForm.TreeViewAdvancedCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean); var Rect:TRect; Text, Zahl:string; begin Rect:=Node.DisplayRect(true); FBitmap.Height:=Rect.Bottom - Rect.Top; FBitmap.Width:=Rect.Right - Rect.Left; Text:=DeleteCount(Node.Text); Zahl:=Node.Text; delete(Zahl, 1, length(Text)); if cdsFocused in State then begin FBitmap.Canvas.Font.Color:=clWhite; FBitmap.Canvas.Brush.Color:=clActiveCaption; end else begin FBitmap.Canvas.Font.Color:=clBlack; FBitmap.Canvas.Brush.Color:=clWhite; end; FBitmap.Canvas.FillRect(FBitmap.Canvas.ClipRect); FBitmap.Canvas.TextOut(2, 1, Text); FBitmap.Canvas.Font.Color:=clBlue; FBitmap.Canvas.TextOut(FBitmap.Canvas.TextWidth(Text)+8, 1, Zahl); Sender.Canvas.Draw(Rect.Left, Rect.Top, FBitmap); end; |
Re: TreeView mit Anzahl der Datensätze im Text
Zitat:
Das klappt leider nicht:
Delphi-Quellcode:
TreeViewAdvancedCustomDrawItem (TreeView1, TreeView1.Selected, cdsDefault, true, true);
|
Re: TreeView mit Anzahl der Datensätze im Text
Doppelklick im Objektinspektor auf der Ereignisseite vom TreeView. Dort gibt es das Ereignis.
|
Re: TreeView mit Anzahl der Datensätze im Text
Zitat:
|
Re: TreeView mit Anzahl der Datensätze im Text
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein Beispiel.
|
Re: TreeView mit Anzahl der Datensätze im Text
Zitat:
D A N K E !!!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz