Autor Beitrag
boozzz
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66

Win XP, Win 2000, SuSe Linux

BeitragVerfasst: Sa 04.02.06 17:01 
Hallo,
ich habe in meinem in Borland Delphi 7 programmierten Programm verschiedene Buttons in Form von Images auf dem Formular platziert. Wenn man mit der Maus über den Button (Image) fährt, ändert sich das Image (andere Farbe). Es wird quasi ein neues Image geladen. Beim Verlassen wird wieder das ursprüngliche Image geladen.

Mein Problem: Wenn ich mit der Maus vom Button auf und ab gehe, flackert das ganze Fenster.

Hier der Quellcode zu den Prozeduren, die den Button beim Darüberfahren verändern, bzw. zurückverändern:
(Die beiden Prozeduren werden im Objektinspektor eines Images unter OnMouseMove aufgerufen)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TForm1.Veraendern(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if not schonveraendert then
  begin
    Form1.Image5.Visible:=true;
    repaint;
  end;

  schonveraendert:=True;
end;

procedure TForm1.Zurueckveraendern(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if schonveraendert then
  begin
    Form1.Image5.Visible:=False;
    repaint;
  end;

  schonveraendert:=False;
end;

Wieso flackert/flimmert das Fenster, wenn ich mit der Maus über das Image fahre und was kann ich dagegen tun?
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 04.02.06 17:07 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Veraendern(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if not schonveraendert then
  begin
    Form1.Image5.Visible:=true;
    repaint;
  end;

  schonveraendert:=True;
end;
Ist es wirklich nötig, das ganze Fenster neu zu zeichnen? Der Button (oder was auch immer) dürfte doch eigentlich reichen, oder?

_________________
We are, we were and will not be.
boozzz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66

Win XP, Win 2000, SuSe Linux

BeitragVerfasst: Sa 04.02.06 17:32 
Danke, hätt ich auch selber draufkommen können. Jetzt flackerts jedenfalls nicht mehr.
boozzz Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66

Win XP, Win 2000, SuSe Linux

BeitragVerfasst: Mo 20.02.06 19:55 
An meinem alten Rechner (Pentium 3 mit 500 Mhz) flackert das Image nach der Änderung weiterhin. Immer wenn ich mit der Maus über das Image (Button) fahre, ist kurzzeitig das dahinterliegende Image sichtbar.

Gibt es keine professionellere Möglichkeit, ein Image beim Darüberfahren mit der Maus zu verändern? Es kann ja irgendwie nicht sein, dass das ganze erst bei 2 GHz aufwärts flüssig läuft, oder?

Gruß,
boozzz
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Mo 20.02.06 19:58 
Das ist jetzt geraten ;)

Hilft das?
ausblenden Delphi-Quelltext
1:
form1.doublebuffered:=true					

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot