Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bilder blinken lassen... (https://www.delphipraxis.net/3113-bilder-blinken-lassen.html)

NeoDeluxe 24. Feb 2003 05:34


Bilder blinken lassen...
 
Moin.
Ich würede gerne wiessen, wie ich so machen kann, dass die Bilder blinken. Also ich habe zwei farbunterschiedlichen Bilder in Resource eingebunden und will nun die Bilder nacheinander laden, aber ich weis nicht nur wie. Ich glaube das geht mit Timer aber wie? Kann mir jemand helfen? :cry:

lodda 24. Feb 2003 08:43

Hallo NeoDelux
also wenn du die beiden Bilder nacheinander zeigen willst, dann kannst du zwei Imagekomponenten erstellen und die dort die beiden Bilder speichern.
Die zwei Imagekomponenten kannst du übereinander legen und dann einfach mit der Sichtbarkeit arbeiten:

Code:
procedure TMainFrm.Timer1Timer(Sender: TObject);
begin
  if FShow1 then
  begin
    Image1.Visible := true;
    Image2.Visible := false;
  end
  else
    Image1.Visible := false;
    Image1.Visible := true;
  end;
  FShow1 := not FShow1;
end;

Sharky 24. Feb 2003 08:56

Re: Bilder blinken lassen...
 
Zitat:

Zitat von NeoDeluxe
Moin.
Ich würede gerne wiessen, wie ich so machen kann, dass die Bilder blinken. ...

Hai NeoDeluxe.

Du brauchst:

a) 1 Timer
b) 1 Image
c) zwei Bilder in der Resource mit den Namen Bitmap_1 und Bitmap_2

Delphi-Quellcode:
var
   bild_nr: Integer;

{***************************************************}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Interval := 1000;
  Timer1.Enabled := False;
  bild_nr := 1;
  Image1.Picture.Bitmap.LoadFromResourceName(HInstance, 'BITMAP_' + IntToStr(bild_nr));
  Timer1.Enabled := True;
end;

{***************************************************}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  case Bild_nr of
   1: bild_nr := 2;
   2: bild_nr := 1;
  end;
  Image1.Picture.Bitmap.LoadFromResourceName(HInstance, 'BITMAP_' + IntToStr(bild_nr));
  Timer1.Enabled := True;
end;
Und schon "blinkt es" :lol:

nailor 24. Feb 2003 10:41

Sharkys Vorschlag ist nicht schlecht, aber such mal im Forum nach "delay" und versuch eine Konstruktion damit...

Sharky 24. Feb 2003 11:20

Zitat:

Zitat von Nailor
Sharkys Vorschlag ist nicht schlecht, aber such mal im Forum nach "delay" und versuch eine Konstruktion damit...


delay? Was soll ihm das den bringen?

Es soll ja blinken und dafür brauche ich ein Ereigniss das alle x ms auftritt. Und das ist dann ein Timer

Mit einem "Delay" erzeuge ich im Programm ja nur eine Pause!

nailor 24. Feb 2003 12:53

Delphi-Quellcode:
while (wie lange soll es blinken) do
begin
  Image1.Picture.Bitmap.LoadFromResourceName(HInstance, 'BITMAP_' + IntToStr(bild_nr));
  delay(XXX);
  Image1.Picture.Bitmap.LoadFromResourceName(HInstance, 'BITMAP_' + IntToStr(bild_nr));
  delay(XXX);
end;
würde einen Timer sparen...

-------------

whoops: Ich dachte, nur einmal wechseln... :oops: Wenn das natürlich die ganze Zeit wechseln soll, wäre ein Timer doch nicht schlecht. Mit ProcessMessages ist nicht das allerbeste.

NeoDeluxe 24. Feb 2003 12:59

Könntest du vielleicht dieses etwas schrittweise erklären. Was soll ich nach dem while schreiben? Da musst doch eine Abfrage statt finden, oder? Und was bedeutet delay(XXX)?

nailor 24. Feb 2003 13:07

delay ist eine (selbstgemachte) procedure, die den Ablauf des Programms um X Millisekunden verzögert, ohne dabei Sachen wie schließen, verschieben... verhindert.

Bei dem while: zb irgend was mit dem TickCount. Oder mach ne for-Schleife, und gib an wie oft.

Aber für deinen Gebrauch ist der Timer besser!

The-X 9. Sep 2003 15:32

Re: Bilder blinken lassen...
 
Hi,

War Delay(ms) nicht eine Procedure aus dem alten Turbo Pascal ?

Wie wär's mit Sleep ? (afaik aus Unit Windows oder so)
die macht das gleiche -> warten ;)

Christian Seehase 9. Sep 2003 15:43

Re: Bilder blinken lassen...
 
Moin The-X,

sleep hält den Thread in dem es aufgerufen wird komplett an, es wird als z.b. nicht mehr neu gezeichnet, wohingegeben das, selbstgemachte, Delay die Verarbeitung von Messages weiterhin zulässt.
(wenn's so gemacht ist, wie die Version, die wir hier in der Code Libraray haben ;-))


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 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