AGB  ·  Datenschutz  ·  Impressum  







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

Parent Abfrage

Ein Thema von Antonov · begonnen am 27. Apr 2014 · letzter Beitrag vom 27. Apr 2014
 
Antonov

Registriert seit: 11. Apr 2014
21 Beiträge
 
FreePascal / Lazarus
 
#1

Parent Abfrage

  Alt 27. Apr 2014, 11:30
Hallo.

Ich hantiere schon seit zwei Tagen mit dem Problem herum, dass ich eine simple Abfrage nicht durchführen kann.
Foren und Internet haben mich nicht sonderlich weiter gebracht ... wahrscheinlich liegt es wieder an einem trivialen Fehler oder ich bin zu blöd (ich bin etwa 4 Wochen alt, was Delphi Kenntnisse angeht).

Folgender Sachverhalt:
Ich habe vor, sagen wir, ein Bild zu bewegen mit MouseDown/Move/Up. Jetzt möchte ich Bilder, die auf einer Scrollbox liegen, NUR in X-Richtung hin und her schieben, und alle anderen Bilder (die auf der Form liegen) in beide Richtungen.
Dazu habe ich mir eine Abfrage gebastelt, die schaut, wer das Parent des jeweiligen Bildes ist.
Dort ist der Haken.
Delphi-Quellcode:
procedure TForm1.CustomImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer); //CustomImageMouseDown/Move ist die custom Procedure für mehrere Bilder
begin
        MoveTag:= TImage(Sender).Tag;
        MovingImage:= CardPanel[MoveTag]; //das Image liegt auf einem Panel drauf, also MovingImage ist eig. das Panel
        MouseMoveDown := true;
        GetCursorPos(OldPos);
        DiffX := OldPos.X - MovingImage.Left ;
        DiffY := OldPos.Y - MovingImage.Top ;
end;

procedure TForm1.CustomImageMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
      GetCursorPos(OldPos);
     if MouseMoveDown = true then
     begin
         MovingImage.Left := OldPos.X - DiffX ; //Immer in X-Richtung
         if GetParent(MovingImage.Handle) is ((P1Scrollbox) or (P2Scrollbox)) then
          begin
           MovingImage.Top := OldPos.Y - DiffY; //Nur wenn NICHT auf einer ScrollHand
          end;
     end;
end;
Der Compiler sagt:
"[Pascal Fehler] MovingImages.pas(511): E2015 Operator ist auf diesen Operandentyp nicht anwendbar."
Der Fehler liegt laut Compiler in der If Parent Abfrage.
Ich habe gehört, dass man das .Handle irgendwie braucht, aber so richtig bin ich da nicht durchgestiegen.

Die Lösung des Problems ist für mich nicht lebenswichtig, da ich immer noch "schummeln" könnte, und in den Hint jedes Objektes einfach sein Parent (oder irgendein Erkennungsmerkmal) reinschreibe beim Erzeugen zur Laufzeit. Aber ich halte das nicht für Elegant, außerdem habe ich nicht unendlich viele Hint-Plätze pro Objekt zur Verfügung.

Wenn das Problem wirklich zu trivial ist oder per Tutorial zu lösen wäre, schlagt zu und schickt mich zu den Tutorials zurück!
...aber ich freue mich gerne über Beiträge!
  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 00:37 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