AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree Descendants

Ein Thema von stOrM · begonnen am 15. Aug 2009 · letzter Beitrag vom 23. Nov 2009
Antwort Antwort
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#1

VirtualStringTree Descendants

  Alt 15. Aug 2009, 18:38
Hi,
ich stehe gerade vor dem Problem, daß ich innerhalb des VST's (Cellrect) diverse Controls benötige (TProgressbar, TCombobox, TButton usw)
Die Editoren sind da für mich gerade nicht praktikabel weil die ja nur erscheinen wenn editiert wird ich muss die Sachen aber immer sichtbar haben, oder gibt es dafür eine andere Möglichkeit?

Das ganze hab ich zur Zeit so gelöst das ich im AfterCellpaint die ganzen Controls ins CellRect verschiebe, wobei sich dann da die Frage gestellt hat, ob man nicht lieber einen Descendant des VST's schreibt der dem User die Arbeit abnimmt?
Dort könnte man vielleicht ein paar Proceduren in der art aufbauen das der User dann nur noch folgendes aufruft:

Delphi-Quellcode:
  Vst.AddProgress(ColumIdx : TColumnIndex);
  Vst.AddButton(ColumIdx : TColumnIndex; DefaultImgIdx : Integer; HotImgIdx: Integer; DownImgIdx: Integer; DisabledImgIdx : Integer);
Delphi-Quellcode:
type
  PItemData = ^TItemData;
  TItemData = record
    Version : string;
    ButtonCheckout,
    ButtonUpdate : TJvImgBtn;
    Progress : TProgressBar;
  end;
Eins der größten Probleme wäre dazu auch noch folgendes, ich muß ja erkennen wo sich die Maus gerade befindet, soll heißen, wenn ich 2 Buttons nutze wie oben aus dem Record ersichtlich, wie erkenne ich welchen Button der User geklickt hat oder welcher Button gerade OnMouseOver / Leave ausgelöst hat. Daher dachte ich halt ggf. besser nen Descendant zu bauen?

Nur wie kann ich die Controls dem Descendant zur Verfügung stellen?

Vielleicht kann mmir jemand kurz erklären wie man die ganzen Controls in so einem Decendant dann richtig verwaltet respektive die Ereignisse: OnMouseLeave/Enter Click abfragt, damit z.b. der ImageIndex der Buttons geändert werden könnte?

Gruß,
s!
  Mit Zitat antworten Zitat
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
197 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: VirtualStringTree Descendants

  Alt 15. Aug 2009, 21:01
Falls du den Code weitergeben willst wäre ein Descendant hübscher, da du deinen Code vom "User-Code" schön abkapseln kannst. Ansonsten, wenn du es nicht weitergibst, hört sich ein Descendant eher an wie Kanonen auf Spatzen schießen. Aber wenn dir das viel Code einspart oder kapselt, kann das trotzdem sinnvoll sein.

Was ich nicht verstehe: Stehen in jeder Node-Zelle irgendwelche Controls oder nur in der FocusedNode bzw. einer bestimmten Zelle oder in allen Zellen einer Spalte?
Ansgar Becker
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: VirtualStringTree Descendants

  Alt 15. Aug 2009, 21:07
Ja Code wird öffentlich sein.
Es kann in jeder Node ein Control auftauchen Ja.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: VirtualStringTree Descendants

  Alt 15. Aug 2009, 21:11
Dann drängt sich die abgeleitete Komponente ja förmlich auf
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: VirtualStringTree Descendants

  Alt 15. Aug 2009, 21:20
Seh ich ganz genauso ich brauch nur mal nen Startpunkt irgendwie, wie ich die Controls in den Vst Descendant route usw...
So das der user später wie gesagt die benötigten Funktionen aufrufen kann da blick ich grad ned durch
  Mit Zitat antworten Zitat
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
197 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: VirtualStringTree Descendants

  Alt 15. Aug 2009, 21:40
Vorschlag, Idee:

Delphi-Quellcode:
uses Contnrs;

...

function TMyVST.AddProgressBarToCell(Sender: TMyVST; Node: PVirtualNode; Column: TColumnIndex): TProgressBar;
begin
  Result := TProgressBar.Create;
  ...
  GetTextInfo(Node, Column, f, CellRect, Text);
  Result.BoundsRect := CellRect;
end;

procedure TMyVST.AddProgressBarsToColumn(Sender: TMyVST; Column: TColumnIndex): TObjectList;
var
  List: TObjectList;
  Node: PVirtualNode;
begin
  List := TObjectList.Create;
  Node := Sender.GetFirst;
  while Assigned(Node) do begin
    List.Add(AddProgressBarToCell(Sender, Node, Column));
    Node := Sender.GetNextSibling(Node);
  end;
end;
Ansgar Becker
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: VirtualStringTree Descendants

  Alt 15. Aug 2009, 21:51
Ah ok verstehe, das sollte erstmal reichen vielen dank, werds morgen mal testen!

Gruss
Marc
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#8

Re: VirtualStringTree Descendants

  Alt 23. Nov 2009, 20:00
Und wie weit bist du gekommen?
Ich bin auch gerade am recherchieren wie man sowas am besten umsetzt.
  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 22:51 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