![]() |
ComboBox in VST
Hallo,
ich würde gerne eine ComboBox in eine VST "Zelle" implementieren, das klappt auch soweit, allerdings kann man die ComboBox nicht vernünftig öffnen! Wenn man drauf klickt kommt kurz oben links auf dem Desktop das Popupmenü, geht aber innerhalb von einer Sekunde wieder zu. Ich glaube das liegt daran, dass der VST sich dauernd selbst refreshed, kann man das solange abschalten oder gibt es sogar eine elegantere Lösung als meine? Hier mal mein Code:
Delphi-Quellcode:
Die Box wird vor dem Node erstellt und Parent wird VST zugewiesen.
procedure TfrmMain.VSTAfterCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; CellRect: TRect); var Data: TData; begin if Column = 2 then begin Data := TData(VST.GetNodeData(Node)^); if (Assigned(Data)) and (Assigned(Data.Box)) then begin CellRect := Sender.GetDisplayRect(Node, Column, False); Data.Box.SetBounds(CellRect.Left, CellRect.Top, CellRect.Right - CellRect.Left, CellRect.Bottom - CellRect.Top ); end; end; end; |
Re: ComboBox in VST
Hallo,
vergiss Deinen Kram, Binde die Unit VTEditors ein und erstelle eine Methode für OnCreateEditor:
Delphi-Quellcode:
begin
case Column of 0 : EditLink := TComboEditLink.Create('F,T,E',csDropDownList); 1,2 : EditLink := TStringEditLink.Create; end; end; |
Re: ComboBox in VST
Hallo,
nach längerer Zeit habe ich mich mit dem Projekt mal wieder beschäftigt. Ich habe meinen Code entfernt und wie du gesagt hast in OnCreateEditor das geschrieben:
Delphi-Quellcode:
Es passiert jedoch nichts. Muss ich noch irgendwas aktivieren oder aufrufen?
procedure TSomeForm.VSTCreateEditor(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; out EditLink: IVTEditLink); begin if Column = 2 then EditLink := TComboEditLink.Create('Test', csDropDownList); end; |
Re: ComboBox in VST
So, ich habe jetzt herausgefunden, dass ich
Delphi-Quellcode:
machen muss, damit die ComboBox erscheint. Allerdings kann sie immer nur in einem Feld sein, es ist nicht möglich sie immer in der ganzen Spalte in allen Zellen anzuzeigen oder? Wenn das nicht geht kann ich ja auch einfach immer das aktive Item als CellText anzeigen.
VST.EditNode(Node, 2); // ComboBox einschalten
Nun zu meinem nächsten Problem: Immer wenn ich irgendwo klicke, auch wenn es in der selben Zeile ist, geht der ItemIndex der Box zurück auf -1. Ich müsste also den ItemIndex immer abspeichern, jedoch hat dieses TComboEditLink überhaupt keine ItemIndex Eigenschaft und auch kein OnChange Event, wie mach ich das dann? |
Re: ComboBox in VST
Hat niemand eine Idee?
Ich meine, so eine Komponente ist doch zu 100% nutzlos, wenn man den eingestellten Wert nicht abrufen kann, also muss das doch irgendwie möglich sein! :( |
AW: ComboBox in VST
Hallo und schönen guten Abend zusammen,
ich suche gerade an der selben Funktion wie hier im Thread. Deshalb möchte ich diesen Thread, da er noch nicht beantwortet ist nutzen, eine Antwot zu finden. Aktuell suche ich nach einer Möglichkeit, in Spalte 2, und 3 eine ComboBox mit jeweils 3 Werten zu integrieren. Der aktuell in einer Datenbank gespeicherte Wert soll nach dem Laden angezeigt werden. Beim Ändern der ComboBox, soll der Eintrag automatisch angepasst werden. Leider hat mir die Suche noch nicht richtig geholfen. Ich weiß mittlerweile, das die ganze Sache über die VTEditors.pas, die Methode OnEditing etc. funktionieren muss. Leider habe ich keine richtigen ansatz. Kann mir jemand vieleicht helfen diesen zu finden. Vielen Dank schon mal und Gruß Jens. |
AW: ComboBox in VST
Niemand eine Idee oder eine Hinweis.
Gruß Jens |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:42 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