AGB  ·  Datenschutz  ·  Impressum  







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

Objecte zwischenspeichern

Ein Thema von EWeiss · begonnen am 16. Sep 2008 · letzter Beitrag vom 22. Sep 2008
 
EWeiss
(Gast)

n/a Beiträge
 
#9

Re: Objecte zwischenspeichern

  Alt 17. Sep 2008, 10:02
Danke dir das sind auf jedenfall verwertbare informationen

Ich versuche nochmal mein problem zu schildern.
Ich hab festgelegte Elemente das wären
Delphi-Quellcode:
TCAVEElementType = (stBackground, stText, stButton, stNone);
TCAVEElementTotals: array[TCAVEElementType] of Integer;
Beim ersten start der Anwendung geht erst mal nix ohne das VST(TreeView)

Beim klick auf den Eintrag Background wird diese Funktion aufgrufen
Delphi-Quellcode:
procedure TMainForm.PaletteStdButtonClick(Sender: TObject);
var
  Data : PTreeData;
  Node : PVirtualNode;

const
  cClasses: array[0..1] of string = ('TImage', 'TLabel');

begin

  StickyClass := (GetKeyState(VK_SHIFT) < 0);

  // Selectierte Node Initialisieren
  Node := FSkinTree.GetFirstSelected;
  Data := FSkinTree.GetNodeData(Node);

  // Hole die Data.Category vom Top Level der ausgewählten Node
  Data.Category := SkinManagerInterface.GetSelectedCategory(FScreensObj, FSkinTree);

  // Objecte angzeigen abhängig vom Index des cClasses Array
  case Data.Category of
    stBackground:
      // TImage
      DesignClass := cClasses[0];
    stText:
      // TLabel
      DesignClass := cClasses[1];
    stButton:
      // TImage
      DesignClass := cClasses[0];
  end;


end;
Der Toplevel des gewählten Eintrag wird nun gesucht und das Element zugewiesen
Delphi-Quellcode:
function TCAVESkinManager.GetSelectedCategory(ScreensObj: TStringList; TreeView: TBaseVirtualTree): TCAVEElementType;
var
  Node: PVirtualNode;
  Data: PTreeData;
  IntI: Integer;

begin
  Node := TreeView.GetFirstSelected;

  // Bestimme die Kategorie für den ausgewählten Knoten
  while (Node <> nil) and (TreeView.GetNodeLevel(Node) > 1) do
    Node := Node.Parent;

  Data := TreeView.GetNodeData(Node);
  if Data <> nil then
    for IntI := 0 to ScreensObj.Count - 1 do
      if ScreensObj.Strings[IntI] = Data.FCaption then
        Data.Category := TCAVEElementType(IntI);

    Result := Data.Category;
end;
ScreensObj ist die Stringlist in der die Knoten beim start zugewiesen wurden
abhängig vom Elementtyp um diesen über den VST zu Identifizieren.
Klicke ich nun in das Panel wird das Object abhängig vom ELementTyp auf dem abgelegt.
In dem Fall TImage.

Wenn nun alle Objecte abgelegt und ich auf irgendeins davon klicke muss ich vergleichen können
welches das ist und zwar abhängig vom ElementType da es sonst unweigerlich zum crash kommt.
Das geht aber in dem Fall nicht über das TreeView.
Und das ist mein problem hab keine Idee wie oder wo ich da abfangen soll
welches object das ist um den ElementTyp korrekt zuweisen zu können.

Ja ist schwer zu erklären
Wie kann ich also die aofgesetzen objecte sinnvoll zwischenspeichern
damit ich sie wieder finde ?
Zitat:
TStringList ?
Classe ?
Oder wie sonst ..am besten mit allen geänderten eigenschaften damit diese auch gleich
wieder im Inspector aktualisiert werden.

gruss Emil
Angehängte Grafiken
Dateityp: jpg test_511.jpg (84,6 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat
 


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 13:55 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