Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi SpeedButton ein Bitmap aus einer TImageList zuweisen (https://www.delphipraxis.net/1804-speedbutton-ein-bitmap-aus-einer-timagelist-zuweisen.html)

Pseudemys Nelsoni 24. Dez 2002 21:04


SpeedButton ein Bitmap aus einer TImageList zuweisen
 
moin,

bin noch ziemlich neu was das coden von delphi angeht...eher gesagt newb :cry: .

Also da ich nicht wusste wie ich meine BMP dateien in das projekt einfügen kann ohne sie nachher irgendwie von C:\bla laden zu müssen hab ich sie mir in die Timagelist eingefügt, nunja aber wie mach ich es z.b das wenn ich auf den speedbutton drücke das bild angezeigt wird das in der timagelist ist? ich hatte das so versucht:

Delphi-Quellcode:
 speedbutton1.glyph := timagelist1. ...
nach dem "." wurde mir kein popup mit optionen angezeigt d.h es muss wohl ein fehler drin sein, wird ja unten auch gesagt, aber was ist daran falsch?

sakura 24. Dez 2002 21:18

Hier mal das Ergebnis meiner Suche in der Delphi-PRAXiS - siehe Suche am oberen Rand.

http://www.delphipraxis.net/viewtopi...ight=imagelist

BitBtn und SpeedButton sind in dieser Hinsicht übrigens gleich

Pseudemys Nelsoni 25. Dez 2002 05:38

Delphi-Quellcode:
 
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Bmp: TBitmap;
begin
  Bmp := TBitmap.Create();
  try
    if ImageList1.GetBitmap(0, Bmp) then
      BitBtn1.Glyph.Assign(Bmp);
  finally
    Bmp.Free;
  end;
end;
so steht es da, aber kann mir den code wer erklären?. wie gesagt ich mach das ganze noch nicht lang und frag mich wieso das bild in eine variable muss wenn es doch einfacher gehen muss.....einfach aus der timagelist laden oder nicht? Und wieso ist 2 mal end; da wenn nur einmal begin auftaucht? und noch eine frage
meine timagelist spinnt irgendwie, egal welches bild ich einfüge der rechte rand(1 pxl) fehlt immerobwohl das bild ganz ist, weiss wer den grund?

jbg 25. Dez 2002 06:20

Zitat:

Und wieso ist 2 mal end; da wenn nur einmal begin auftaucht?
Weil es nicht nur begin end gibt, sondern auch try finally end bzw. try except end.
Der Code lässt sich aber auch einfacher darstellen:
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  ImageList1.GetBitmap(0, BitBtn1.Glyph);
end;

Pseudemys Nelsoni 25. Dez 2002 08:40

ah danke, der code sihet mir schon einfacher aus :wink:

btw schnelle antworten hier das ist cool, in anderen foren warte ich mindestens ne woche

Pseudemys Nelsoni 28. Dez 2002 09:58

hm wenn da kein bitmap in dem button ist und ich den button anklicke kommt das bitmap hinzu, aber wenn ich nen anderen button klicke das dem button der nun das bitmap enthält ein anderes bitmap zuweist klappt das nicht....muss ich das alte erst entfernen um das neue sehen zu können?

sakura 28. Dez 2002 11:10

Nimm doch mein Code, Copy&Paste ist ja nicht so schwer, oder? ;) Kurze Erläuterung

Code:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Bmp: TBitmap;
begin
  [color=#0000ff]// temporäre Bitmap erstellen[/color]
  Bmp := TBitmap.Create();
  [color=#0000ff]// Versuche...[/color]
  try
    [color=#0000ff]// das 1. (Position 0) Bitmap aus der ImageListe in das temporäre Bitmap zu laden[/color]
    if ImageList1.GetBitmap(0, Bmp) then
      [color=#0000ff]// Weise dieses jetzt dem BitBtn (oder SpeedButton) zu[/color]
      BitBtn1.Glyph.Assign(Bmp);
  [color=#0000ff]// abschließend, egal ob der Rest seit dem [b]try[/b] funktioniert hat[/color]
  finally
    [color=#0000ff]// lösche das temporäre Bitmap wieder, um den Speicher freizugeben[/color]
    Bmp.Free;
  end;
  [color=#0000ff]// fertig[/color]
end;

Pseudemys Nelsoni 28. Dez 2002 11:24

ah, danke werds gleich mal probieren :)

Pseudemys Nelsoni 28. Dez 2002 11:32

jep, geht, danke :)


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