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 ComboBox in VST (https://www.delphipraxis.net/124119-combobox-vst.html)

WorstNightmare 14. Nov 2008 20:38


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:
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;
Die Box wird vor dem Node erstellt und Parent wird VST zugewiesen.

sh17 20. Nov 2008 12:18

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;

WorstNightmare 25. Jan 2009 11:31

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:
procedure TSomeForm.VSTCreateEditor(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; out EditLink: IVTEditLink);
begin
  if Column = 2 then
    EditLink := TComboEditLink.Create('Test', csDropDownList);
end;
Es passiert jedoch nichts. Muss ich noch irgendwas aktivieren oder aufrufen?

WorstNightmare 27. Jan 2009 11:12

Re: ComboBox in VST
 
So, ich habe jetzt herausgefunden, dass ich
Delphi-Quellcode:
VST.EditNode(Node, 2);   // ComboBox einschalten
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.

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?

WorstNightmare 30. Jan 2009 16:19

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! :(

Jens Hartmann 28. Feb 2011 21:51

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.

Jens Hartmann 1. Mär 2011 11:08

AW: ComboBox in VST
 
Niemand eine Idee oder eine Hinweis.

Gruß Jens


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