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 TreeView Bitmaps zur Laufzeit ändern (https://www.delphipraxis.net/69540-treeview-bitmaps-zur-laufzeit-aendern.html)

Chemiker 16. Mai 2006 18:55


TreeView Bitmaps zur Laufzeit ändern
 
Hallo,

ich habe ein Problem mit der Änderung einer Bitmap in einen TreeView.

Beim anclicken einer DBCheckBox, soll sich an dem markierte Knoten die Bitmap ändern.
Dies funktioniert aber nur beim letzten Knoten, egal welcher Knoten makiert ist.


Delphi-Quellcode:
if TreeView1.Selected <> nil then
begin
  if not DBCheckBox1.Checked then
  begin
    m_Ebene3.SelectedIndex := 3;
    Repaint;
  end;
end;
Vieleicht kann mir einer weiterhelfen ?

[edit=SirThornberry]Delphi-Tags ergänzt. Mfg, SirThornberry[/edit]

marabu 16. Mai 2006 20:21

Re: TreeView Bitmaps zur Laufzeit ändern
 
Herzlich willkommen in der Delphi-PRAXiS, Chemiker.

Du prüfst zwar, ob ein Knoten selektiert ist, arbeitest dann aber mit m_Ebene3 - welcher Knoten das auch immer sein mag. In welcher Beziehung stehen die Knoten der TreeView denn zu den Datensätzen? Verschiebt die Knotenauswahl den Datensatzzeiger? Normalerweise besorgt sich die TreeView die Nummer des benötigten Bildes über das Ereignis OnGetSelectedIndex(), du aber scheinst zu versuchen den Index im event handler OnClick() der DBCheckBox zu setzen.

Freundliche Grüße vom marabu

Chemiker 16. Mai 2006 21:06

Re: TreeView Bitmaps zur Laufzeit ändern
 
[list][*]Hallo marabu,


Die Datensätze sind einfach als Text übergeben worden und sind nicht direkt mit der Datenbank
verbunden.

TreeView - Aufbau:

[center]Machinen (m_Ebene1)
|
|-----Tank1 (m_Ebene2)
| |
| |------ Temperatur vom Tank 1 (m_Ebene3)
|
|-----Tank2 (m_Ebene2)
|
|------ Temperatur vom Tank 2 (m_Ebene3)
|
|------ Druck vom Tank 2 (m_Ebene3)

usw.

vor den Knoten der m_Ebene3 sind Bitmaps und diese will ich verändern:
z.B.: Temperatur von Tank 1 ist ausgewählt, anschliessend gehe ich auf die DBCheckBox und ändere deren
Zustand. Anschliessend soll sich die Bitmap vom Eintrag Temperatur von Tank 1 ändern.

Um den Knoten zu löschen, gehe ich so vor, dass funktioniert auch.

if TreeView1.Selected <> nil then
begin
TreeView1.Items.Delete(TreeView1.Selected);
MStellenTable.Delete;
end;

Der markierte Knoten wird gelöscht.

===> Auf die gleiche Weise würde ich gerne die Bitmap ändern, nur habe ich keine Idee.

marabu 16. Mai 2006 21:50

Re: TreeView Bitmaps zur Laufzeit ändern
 
Wenn du weißt, dass du beim Ändern der DBCheckBox das Image des gerade markierten Knoten ändern möchtest, dann versuche es mal mit der Eigenschaft ImageIndex von TreeView.Selected - über die Eigenschaft SelectedIndex steuerst du ja nur die visuelle Hervorhebung beim Wechsel des markierten Knoten.

Gute Nacht

marabu

Chemiker 18. Mai 2006 08:46

Re: TreeView Bitmaps zur Laufzeit ändern
 
Hallo marabu,

danke für die Antwort. Ich habe beide Befehl ausprobiert habe aber das Problem das unabhängig wie die DBCheckBox geändert wird sich die Bitmap ändert.

Ich habe einfach das Problem das sich das Programm nicht merkt welcher Knoten markiert ist, wenn ich auf die DBCheckBox clicke um den Zustand zu ändern.


Ich habe es jetzt erstmal so gelöst das ich den kompletten Baum lösche und anschliessend mit den geänderten Daten wieder neu Aufbaue. Das sieht nur doof aus.

Ich bin nur leider jetzt 14 Tage nicht online, wenn Du eine Antwort hast kann ich erst in 14 Tage wieder antworten.

Bis bald

Chemiker

marabu 18. Mai 2006 09:42

Re: TreeView Bitmaps zur Laufzeit ändern
 
Das liest sich alles sehr abenteuerlich. Melde dich einfach nochmal, wenn du wieder online bist.

Freundliche Grüße vom marabu


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