Autor Beitrag
klezmor
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: So 10.07.05 15:33 
Ich will z.B. ein paar Pixel auf ein Formular zeichnen, damit diese nicht verschwinden wenn das fenster verdeckt wird, schreibe ich dies in das OnPaint ereignis.
Aber wie schaffe ich es, das die Pixel erst erscheinen, wenn ich auf einen Button drücke.
Denn eigentlich müsste ich ja den Anweisungsblock in das Buttonereignis schreiben, aber dann verschwinden sie, wenn ich das Fenster kurzfristig verdeckt habe.
Michael Stenzel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 133


D3 Prof, D7 PE
BeitragVerfasst: So 10.07.05 16:06 
Hi Klezmor.

Du kannst es so lösen.

Du legst eine Variable vom Typ Boolean an;

ausblenden Delphi-Quelltext
1:
2:
3:
...
      isButtonClicked : boolean;
...


Anschließend in dem ButtonClick-Ereigniss.

ausblenden Delphi-Quelltext
1:
2:
3:
...
     isButtonClicked := true;
...


In der Paint Methode

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
...
     If isButtonClicked then begin
        // Pixel malen
        ...
     end;
...


und in der Create-Methode der Form

ausblenden Delphi-Quelltext
1:
2:
3:
...
     isButtonClicked := false;
...


Damit sollte dein Problem gelöst sein.
Gruß
Michael.
Tilo
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: Mo 11.07.05 13:33 
andere Methode:

ein 2Darray so groß wie das Fenster erstellen. Darin die Farbwerte des fensters speichern.
in der Click routine des Buttons die entsprechenden Einträge ändern
und in der OnPintroutine die Werte "übertragen"
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mo 11.07.05 16:14 
user profile iconTilo hat folgendes geschrieben:
ein 2Darray so groß wie das Fenster erstellen. Darin die Farbwerte des fensters speichern.
in der Click routine des Buttons die entsprechenden Einträge ändern
und in der OnPintroutine die Werte "übertragen"
Dauert es dann aber nicht ewig, bis die Werte a) gespeichert sind und b) wieder abgerufen. Du müsstest ja dann wahrscheinlich mit Canvas.Pixels arbeiten und das ist langsam. Ich denke, ich würde Michaels Lösung präferieren, wobei man natürlich den Status, ob der Button geklickt wurde noch einfacher im Tag des Buttons ablegen könnte ;)

Gruß,
maxk

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
klezmor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: Mo 11.07.05 20:30 
[quote="user profile iconmaxk"]
user profile iconTilo hat folgendes geschrieben:
Ich denke, ich würde Michaels Lösung präferieren, wobei man natürlich den Status, ob der Button geklickt wurde noch einfacher im Tag des Buttons ablegen könnte ;)

Gruß,
maxk


was ist ein Tag und wie soll das dann funktionieren?
Alstar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Mo 11.07.05 20:32 
Tag ist eine numerische Eigenschaft, die jede Komponente besitzt und die man z.B. so ändern kann:
ausblenden Delphi-Quelltext
1:
  Button.Tag := 3;					


Alstar
klezmor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: Mo 11.07.05 20:34 
Das hilft mir leider immer noch nicht so richtig weiter, kannst du mir ein Beispiel geben?
Alstar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Mo 11.07.05 20:37 
Naja. Du kannst in der Tag-Eigenschaft z.B. speichern, ob der Button gedrückt wurde oder nicht und das später abfragen:

onButtonClick
ausblenden Delphi-Quelltext
1:
  Button.Tag := 1; // Button wurde gedrückt					


ausblenden Delphi-Quelltext
1:
2:
3:
4:
  if Button.Tag = 0 then
    // Button wurde noch nicht gedrückt
  else
    // Button wurde gedrückt


Alstar