AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi feststellen ob geklickt ohne Klick-Prozedur

feststellen ob geklickt ohne Klick-Prozedur

Ein Thema von TheAn00bis · begonnen am 5. Dez 2004 · letzter Beitrag vom 5. Dez 2004
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.010 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

Re: feststellen ob geklickt ohne Klick-Prozedur

  Alt 5. Dez 2004, 15:05
Ok ich nehm alles zurück
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#12

Re: feststellen ob geklickt ohne Klick-Prozedur

  Alt 5. Dez 2004, 15:18
Aber ich brauch doch für find Component erst mal das Sufix des Panels oder nicht?

Ach ich erklär einfach alles:

Also jedes der PAnel hat eine andere Farbe, jetzt will ich rausfinden, welche Farbe das geklickte Panel hat. Allerdings eben nicht für jedes PAnel eine neue Procedure. Leider hat ein Panel ja kein Canvas, deshalb geht Panel1.Canvas.pixels[x,y] ja nicht. Allerdings will ich auch kein Bild nehmen und ein Grid ist mir zu aufwendig.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#13

Re: feststellen ob geklickt ohne Klick-Prozedur

  Alt 5. Dez 2004, 15:22
Zitat von TheAn00bis:
Aber ich brauch doch für find Component erst mal das Sufix des Panels oder nicht?

Ach ich erklär einfach alles:

Also jedes der PAnel hat eine andere Farbe, jetzt will ich rausfinden, welche Farbe das geklickte Panel hat. Allerdings eben nicht für jedes PAnel eine neue Procedure. Leider hat ein Panel ja kein Canvas, deshalb geht Panel1.Canvas.pixels[x,y] ja nicht. Allerdings will ich auch kein Bild nehmen und ein Grid ist mir zu aufwendig.
Hi,

dann würde ich folgendes machem.

Im private oder public Bereich Deines Forms (je nach dem, wo du es brauchst) erstellst Du eine Variable vom Typ Delphi-Referenz durchsuchenTColor.
(In dem Beispiel nenne ich die Variable mal "MyColorVar")

Dein Panel kennt ja die Eigenschaft Color, also dürfte das ganz passend sein.

In die OnClick-Methode, die Du jedem Panel zuweist, schreibst du Folgendes:
Delphi-Quellcode:
begin
  if (Sender is TPanel) then
    MyColorVar := TPanel(Sender).Color;
end;
mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#14

Re: feststellen ob geklickt ohne Klick-Prozedur

  Alt 5. Dez 2004, 15:30
Hab vielen Dank, klappt perfekt!

Noch eine Frage, die if Abfrage ist doch eigentlich überflüßig, da die Procdur ja nur bei einem Panel-Klick ausgeführt wird, oder? Und was ich nicht verstehe, wenn der Sender TPanel ist (dann steht ja in "Sender" nur TPanel oder nicht?), warum erkennt der dann mit TPanel(Sender).Color; die Nummer des PAnels?


Anubis, besser gleich richtig fragen....
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.642 Beiträge
 
Delphi 2009 Professional
 
#15

Re: feststellen ob geklickt ohne Klick-Prozedur

  Alt 5. Dez 2004, 15:33
Hallo,
Zitat von TheAn00bis:
... Leider hat ein Panel ja kein Canvas, deshalb geht Panel1.Canvas.pixels[x,y] ja nicht. ...
Das ist so nicht richtig. TPanel hat eine Canvas property. Nur nicht sichtbar, da protected.
So ein Problem lößt man am schnellsten mit einem TPanel-Dummy.
Hier kommt der Dummy:
Delphi-Quellcode:
Type
  TPanelCanvas = class(TPlanel)
  public
    property Canvas;
  end;
Das ist erstmal alles!
Jetzt kannst Du in dem OnMouseUpEventhandler folgendes schreiben
Delphi-Quellcode:
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  If Sender is TPanel then
    TPanelCanvas(Sender).Canvas.Pixels[X,Y]:=clRed;
end;
Wie man sieht, wird nie eine Instanz der TPanelCanvas erzeugt, sondern das Ding
wird nur für einen Typecast verwendet.

In der Anlage ist ein kleines Beispiel
Angehängte Dateien
Dateityp: zip zip_101.zip (202,2 KB, 6x aufgerufen)
I come from outer space to save the human race
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#16

Re: feststellen ob geklickt ohne Klick-Prozedur

  Alt 5. Dez 2004, 15:38
er erkennt keien nummer sonder die farbe *G* in sender steht der name drin von wo aus die procedure aufgerufen wurden ist und jetzt kann man mit sender is TPannel prüfen ob es ein TPannel überhaupt ist, ist es nur eine sicherheitsabrfage.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#17

Re: feststellen ob geklickt ohne Klick-Prozedur

  Alt 5. Dez 2004, 15:39
Danke für deine Antwort, Jens!

Ist wirklich nützlich zu wissen, dass es möglich ist, auf ein Panel zu zeichnen. Gibt es denn noch mehr Objekte mit einem versteckten Canvas? Wie finde ich das raus? [hoffe das geht nicht zu sehr ins OT...]


Zitat von mimi:
er erkennt keien nummer sonder die farbe *G* in sender steht der name drin von wo aus die procedure aufgerufen wurden ist und jetzt kann man mit sender is TPannel prüfen ob es ein TPannel überhaupt ist, ist es nur eine sicherheitsabrfage.
die Farbe erkennt er durch das .color, das ist selbst mir klar . Aber was genau steht denn jetzt im Sender? Panel1, oder was, was macht dann das TPanel davor? Ich schreib doch sonst auch nicht TPanel.Panel1.Color sondern nur Panel1.color.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.642 Beiträge
 
Delphi 2009 Professional
 
#18

Re: feststellen ob geklickt ohne Klick-Prozedur

  Alt 5. Dez 2004, 15:40
Zitat von mimi:
er erkennt keien nummer sonder die farbe *G* in sender steht der name drin von wo aus die procedure aufgerufen wurden ist und jetzt kann man mit sender is TPannel prüfen ob es ein TPannel überhaupt ist, ist es nur eine sicherheitsabrfage.
Achtung: In Sender steht nicht der Name, sondern es handelt um eine Referenz auf das Objekt, dass das Event ausgelöst hat.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.642 Beiträge
 
Delphi 2009 Professional
 
#19

Re: feststellen ob geklickt ohne Klick-Prozedur

  Alt 5. Dez 2004, 15:42
Zitat von TheAn00bis:
Danke für deine Antwort, Jens!

Ist wirklich nützlich zu wissen, dass es möglich ist, auf ein Panel zu zeichnen. Gibt es denn noch mehr Objekte mit einem versteckten Canvas? Wie finde ich das raus? [hoffe das geht nicht zu sehr ins OT...]
Ganz einfach - in den VCL-Sourcecode schauen.
Alle Nachfahren von TCustomControl und TGraphicControl haben die Canvas property.
I come from outer space to save the human race
  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 07:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf