Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Problem mit Bittmap in Button (BitBtn) (https://www.delphipraxis.net/137126-problem-mit-bittmap-button-bitbtn.html)

egon.kaschuba 14. Jul 2009 21:48


Problem mit Bittmap in Button (BitBtn)
 
:wall:

Hallo,
wenn ich auf dem Button Klicke soll ein Disk_Open.BMP
in dem Button erscheinen.
Klicke ich dann nochmal auf den Button soll ein Disk_Close.BMP
in dem Button erscheinen.

Delphi-Quellcode:
procedure TFormDVDPlayer.cdOpenClick(Sender: TObject);
begin
 if fOpen = False then begin // ist CD-Laufwerk offen?

//*******************************************************************************************
  ImageList4.GetBitmap(2, Web_Open.Glyph); // aus ImageList Bild öffnen u. in Button ablegen
  // z.B Disk_Open.BMP
//*******************************************************************************************


  mciSEndString('SET CDAUDIO DOOR OPEN WAIT' , nil ,0, Self.Handle); // wenn nicht, öffne
  fOpen := True;
 end
 else begin
 
//******************************************************************************************
  ImageList4.GetBitmap(1, Web_Open.Glyph); // aus ImageList Bild öffnen u. in Button ablegen
  // z.B Disk_Close.BMP
//******************************************************************************************

  mciSEndString('SET CDAUDIO DOOR CLOSED WAIT' , nil ,0, Self.Handle); // wenn ja, schließe
  fOpen := False;
end
     end;


kann mir einer bei meinem Problem helfen?


Gruß
- Egon

sx2008 15. Jul 2009 07:05

Re: Problem mit Bittmap in Button (BitBtn)
 
Tipp:
Verwende ActionLists!
Erstelle zwei Actions (ActionOpen und ActionClose) und schreibe deinen Code (mciSEndString....)
in die Eventhandler von OnExecute der Actions.

Du kannst jetzt den Bitbutton ganz einfach von einer Action auf die andere umstellen:
Delphi-Quellcode:
BitnBtn1.Action := ActionClose;
// beziehungsweise
BitnBtn1.Action := ActionOpen;
Dabei ändert sich die Caption, Bitmap und der Eventhandler beim Klicken auf einen Rutsch.
Sehr interessant bei Actions ist auch der Hotkey.
Du kannst z.B. der ActionOpen den Hotkey Strg-O zuweisen.

egon.kaschuba 15. Jul 2009 12:32

Re: Problem mit Bittmap in Button (BitBtn)
 
:firejump:

Hallo sx2008.

Danke für den Tip, aber ich habe einfach mal NACHGEDACHT,
und die Zeile geändet mit ... cdOpen.ImageIndex:=54 (Öffnen) b.z.w. cdOpen.ImageIndex:=55 (Schließen)

Das funktioniert bestens.

Gruß
- Egon



Delphi-Quellcode:
procedure TFormDVDPlayer.cdOpenClick(Sender: TObject);
begin
 if fOpen = False then begin // ist CD-Laufwerk offen?

  mciSEndString('SET CDAUDIO DOOR OPEN WAIT' , nil ,0, Self.Handle); // wenn nicht, öffne
  cdOpen.ImageIndex:=54; // Öffnen.bmp
  fOpen := True;
 end
 else begin
   mciSEndString('SET CDAUDIO DOOR CLOSED WAIT' , nil ,0, Self.Handle); // wenn ja, schließe

  cdOpen.ImageIndex:=55;  // Schließen.bmp
  fOpen := False;
end
     end;

DP-Maintenance 15. Jul 2009 13:35

DP-Maintenance
 
Dieses Thema wurde von "mkinzler" von "Freeware" nach "Multimedia" verschoben.
Ist kein Freeware Programm

sx2008 17. Jul 2009 01:18

Re: Problem mit Bittmap in Button (BitBtn)
 
Zitat:

Zitat von egon.kaschuba
Danke für den Tip, aber ich habe einfach mal NACHGEDACHT,...

Mag sein, aber wenn du ein bisschen weiter nachdenkst, kommst du drauf, dass Actions und ActionLists
das Programmieren vereinfachen und verbessern.
Z.B. entfällt dann die Variable fOpen.
Man kann z.B. Actions gleichzeitig mit einem Button und einem Menüpunkt verknüpfen.
Du brauchst im Moment vielleicht kein Menü, aber der Kopf ist rund, damit das Denken die Richtung ändern kann. :zwinker:


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