AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Objecte zwischenspeichern

Ein Thema von EWeiss · begonnen am 16. Sep 2008 · letzter Beitrag vom 22. Sep 2008
Antwort Antwort
Seite 3 von 4     123 4   
EWeiss
(Gast)

n/a Beiträge
 
#21

Re: Objecte zwischenspeichern

  Alt 17. Sep 2008, 13:30
Danke schön werd es mal testen und bescheid geben ob ein Erfolg zu verzeichnen ist.

gruss Emil
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#22

Re: Objecte zwischenspeichern

  Alt 17. Sep 2008, 18:27
Hab jetzt eine lösung gefunden na ja nicht das aller beste aber es funktioniert
Dank an HenKst hab es mit dem Tag und unter Hilfe von Stephan doch noch geschaft.

Delphi-Quellcode:
function TCAVESkinManager.GetSelectedCategory(ObjectList: TStringList; TreeView: TBaseVirtualTree; Obj: TObject): TCAVEElementType;
var
  Data : PTreeData; // Zeiger auf die Structur
  SearchData : PTreeData; // Zeiger auf die Structur
  Tag : Integer; // wird addiert zum Object wenn erstellt

begin
  // Daten zurücksetzen
  Data := nil;

  // raus hier wenn kein Tag im Object vorhanden
  if TControl(Obj).tag = 0 then
  begin
    Result := stNone;
    exit;
  end;

  New(SearchData);

  Tag := TControl(Obj).tag;
  // Index out of bound von ObjectList verhindern
  dec(Tag);

  begin
    // Caption übergeben ermittelt über ObjectList.Index
    // verglichen mit dem im Obj übergebenen Tag
    SearchData^.FCaption := ObjectList.strings[Tag];
    FFoundNode := nil;
    // Callback IterateSubTree aufrufen
    TreeView.IterateSubTree (nil, FSkinTreeCallBack, pointer(SearchData));
    // Eintrag gefunden .. CategoryNode zuweisen
    if Assigned(FFoundNode) then
    begin
      // Node an die class TCAVESkinManager übergeben
      CategoryNode := FFoundNode;
      // Structur Daten aktualisieren
      Data := TreeView.GetNodeData(CategoryNode);
    end;
  end;

  Result := Data.Category;

end;
Um nicht einen neuen Thread zu erstellen eine Frage hinterher
Wie kann ich jetzt übergreifend für alle Obj ein MouseEvent übergeben
Das existiert ja nicht bei der erstellung zur Laufzeit.

übergreifend (für alle die gleiche)
Oder sollte man das aufteilen ?

gruss Emil
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#23

Re: Objecte zwischenspeichern

  Alt 18. Sep 2008, 10:57
Hallo Emil,

hat Dein Objekt ein OnMouseDown?

Dann beim Erstellen des Objektes diesem Attribut eine Methode zuweisen. Die musst Du irgendwo implementieren, wievielen Objekten Du sie letztlich zuweist, ist dabei vollkommen schnuppe.

Sowas in der Art könnte Dir helfen:

Delphi-Quellcode:
type
  TfmMain = class(TForm)
...
    procedure miBerichteClick(Sender: TObject);
...
  private
...

implementation
...

procedure TfmMain.miBerichteClick(Sender : TObject);
Begin
  If Sender Is tMenuItem Then With Sender As tMenuItem Do Begin
    ShowMessage(Name + ' ' + Caption + ' ' + IntToStr(Tag));
  End;
End;

...

  Obj.Create(wieauchimmer);
...
  // Ereignisroutine zuweisen
  Obj.OnMouseDown := fmMain.miBerichteClick;
...
Stephan
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#24

Re: Objecte zwischenspeichern

  Alt 18. Sep 2008, 12:18
Zitat von nahpets:
Hallo Emil,

hat Dein Objekt ein OnMouseDown?

Dann beim Erstellen des Objektes diesem Attribut eine Methode zuweisen. Die musst Du irgendwo implementieren, wievielen Objekten Du sie letztlich zuweist, ist dabei vollkommen schnuppe.

Sowas in der Art könnte Dir helfen:

Delphi-Quellcode:
type
  TfmMain = class(TForm)
...
    procedure miBerichteClick(Sender: TObject);
...
  private
...

implementation
...

procedure TfmMain.miBerichteClick(Sender : TObject);
Begin
  If Sender Is tMenuItem Then With Sender As tMenuItem Do Begin
    ShowMessage(Name + ' ' + Caption + ' ' + IntToStr(Tag));
  End;
End;

...

  Obj.Create(wieauchimmer);
...
  // Ereignisroutine zuweisen
  Obj.OnMouseDown := fmMain.miBerichteClick;
...
Stephan
Super wie du mir bei meinen problemen hilfst
Denk das kann ich genause für Move und Down verwenden lediglich das Click Event auf down und move verändern

gruss Emil
  Mit Zitat antworten Zitat
HenKst

Registriert seit: 7. Jul 2008
113 Beiträge
 
#25

Re: Objecte zwischenspeichern

  Alt 18. Sep 2008, 12:47
Zitat von EWeiss:
Denk das kann ich genause für Move und Down verwenden lediglich das Click Event auf down und move verändern
Versteh ich jetz nich.
Das OnClick kannst du doch genauso zuweisen.
Haben TPicture und TLabel, soweit ich mich erinnere, beide

Zitat:
Dank an HenKst
biddeschön
narf - not a real function
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#26

Re: Objecte zwischenspeichern

  Alt 18. Sep 2008, 13:02
Zitat von HenKst:
Zitat von EWeiss:
Denk das kann ich genause für Move und Down verwenden lediglich das Click Event auf down und move verändern
Versteh ich jetz nich.
Das OnClick kannst du doch genauso zuweisen.
Haben TPicture und TLabel, soweit ich mich erinnere, beide

Zitat von "EWeiss:
Dank an HenKst
biddeschön
ich meine so
Delphi-Quellcode:
Obj.OnMouseDown := fmMain.miBerichteMouseDown;
Obj.OnMouseMove := fmMain.miBerichteMouseMove;
Obj.OnMouseUp := fmMain.miBerichteMouseUp;

procedure miBerichteMouseDown(Sender: TObject.. bla bla); //was halt noch zu dem Event MouseDown gehört
usw...

haben uns da wohl falsch verstanden ..

Gruss Emil
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#27

Re: Objecte zwischenspeichern

  Alt 18. Sep 2008, 13:09
Hallo Emil,

nä, lieber nicht.
So würde beim Drücken der Maustaste das Ereignis ausgelöst, beim Festhalten und beim Loslassen.
Okay, aller Guten Dinge sind drei, aber hier ist das wohl übertrieben. Du musst schon entscheiden, wann die Anwendung des Ereignisses vom Programmablauf her sinnvoll ist.

Klickst Du eine Komponente an, um sie zu verschieben, muss das Ereignis eventuell noch nicht ausgelöst werden, sondern erst, wenn das Objekt an der neuen Stelle ist, weil Du z. B. seine neue Position wissen möchtest.
Wenn es sich um die TLabels und TImages handelt, dann ist eventuell auch die Benutzung von onDoubleClick sinnvoller, kommt halt auf die Aufgabe an.

Stephan
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#28

Re: Objecte zwischenspeichern

  Alt 18. Sep 2008, 13:31
Zitat von nahpets:
Hallo Emil,

nä, lieber nicht.
So würde beim Drücken der Maustaste das Ereignis ausgelöst, beim Festhalten und beim Loslassen.
Okay, aller Guten Dinge sind drei, aber hier ist das wohl übertrieben. Du musst schon entscheiden, wann die Anwendung des Ereignisses vom Programmablauf her sinnvoll ist.

Klickst Du eine Komponente an, um sie zu verschieben, muss das Ereignis eventuell noch nicht ausgelöst werden, sondern erst, wenn das Objekt an der neuen Stelle ist, weil Du z. B. seine neue Position wissen möchtest.
Wenn es sich um die TLabels und TImages handelt, dann ist eventuell auch die Benutzung von onDoubleClick sinnvoller, kommt halt auf die Aufgabe an.

Stephan
Nein, nein
Ich benötige diese ereignisse
Jedoch nicht im Design mode wenn du ein object verschiebst oder änderst.
Nur wenn Preview eingeschaltet ist werden diese Events ausgelößt.

Ich prüfe also vorher im MouseMove oder anderen Event ob
JvDesignPanel.Active := Active1.Checked; Ich brauche die teile da ich ein ImageStrip einlade das nachher mit den Events
geblittet wird.
Ich hoffe das es funktioniert

gruss Emil
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#29

Re: Objecte zwischenspeichern

  Alt 19. Sep 2008, 19:37
@Stephan

habe das mal getestet beomme aber das von dir benannte event nicht
weder onMouseMove ,Down noch ein anderes.

kann es also aObj nicht zuweisen.
Delphi-Quellcode:
procedure TCAVEUIObject.ShowSelProperties(Inspector: TJvInspector;
  aObj: TObject; Props: array of string; NodeText: string);
var
  i : integer;
  Category: TJvInspectorCustomCategoryItem;

begin
  Inspector.Root.Clear;

  Category := TJvInspectorCustomCategoryItem.Create(Inspector.Root, nil);
  Category.DisplayName := NodeText;
  Inspector.Root.SortKind := iskNone;

  for i:=Low(Props) to High(Props) do
    TJvInspectorPropData.New(Category, aObj, GetPropInfo(aObj, Props[i]));

  if aObj.classname = 'TImagethen
    tmpImage := TImage(aObj);

  Category.Expanded := True;
end;
gruss Emil
  Mit Zitat antworten Zitat
HenKst

Registriert seit: 7. Jul 2008
113 Beiträge
 
#30

Re: Objecte zwischenspeichern

  Alt 22. Sep 2008, 13:24
Mal zum Verständis.

Du Rufst im OnMouseDown Event TCAVEUIObject.ShowSelProperties(bla, sender, bla,bla) auf?
Aber im Event kommst du garnicht erst an?

Parent und alles richtig gesetzt? (Das is meistens bei mir das problem wenn objecte nicht da sind^^)

Ich habs grade getestet und hab(nachdem ich dann endlich auch den parent richtig gesetzt hatte ) wunderbar ein zur laufzeit erzeugtes TImage übers Onclick wieder gefreet, indem ich den sender im OnMouseDown einer free prozedur übegeben habe.

Wüsste also nicht wieso das bei dir nicht klappen sollte.
Es sei denn du hast halt den Parent nicht gesetzt^^
Vielleicht ist dir das ja nicht aufgefallen.
TImage und TLabel sind ja beide nicht zu sehen solange nichts drin ist
narf - not a real function
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:33 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