Verwendung von Windows-Icons in Dialogfenstern

Rund um die LCL und andere Komponenten
Antworten
MoTala
Beiträge: 1
Registriert: Sa 26. Dez 2009, 07:31
OS, Lazarus, FPC: Windows XP (L 0.9.xy FPC 2.2.z)
CPU-Target: 32Bit

Verwendung von Windows-Icons in Dialogfenstern

Beitrag von MoTala »

Hi!

Als Umsteiger von Delphi versuche ich gerade, ein simples Programm unter Lazarus zum Laufen zu bringen.

Dabei sollen Dialogfenster (MessageBox-Stil) mit diesen Standard-Windows-Icons versehen werden.

Für Delphi hatte ich einen passenden Code, man findet ihn z.B. hier:

Code: Alles auswählen

uses ShellAPI;
 
    //drop a timage (image1) on the form
    var
      icon : TIcon;
    begin
      Icon := TIcon.Create;
      try
       icon.Handle := LoadIcon(icon.Handle, PChar(IDI_QUESTION)) ;
       Image1.Picture.Icon := Icon;
      finally
        icon.Free;
      end;
    end;
Leider erscheint kein Bild. Der Versuch

Code: Alles auswählen

image1.Picture.Icon := Application.Icon
klappt dagegen.

Desweiteren habe ich das "PChar(IDI_QUESTION)" mal einer lokalen Variablen zugewiesene, der Debugger meint zum Wert der Variablen dann "Adress out of Bounds". Offenbar liegt das Problem in dieser Anweisung begründet.

In den Sourcen der IDE finde ich auch keine Hinweise, wie das gemacht werden soll.

Für Lösungsvorschläge bedanke ich mit im Vorraus herzlich.

MoTala

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: Verwendung von Windows-Icons in Dialogfenstern

Beitrag von theo »

MoTala hat geschrieben: In den Sourcen der IDE finde ich auch keine Hinweise, wie das gemacht werden soll.
Da sind schon welche.
MoTala hat geschrieben: Für Lösungsvorschläge bedanke ich mit im Vorraus herzlich.
Lazarus ist nicht Delphi!! Eine Cross-Platform Lösung wäre afaics:

Code: Alles auswählen

uses ...Interfacebase, LCLType;
....
var bmp,mask:HBitmap;
begin
if WidgetSet.ThemeServices.GetStockImage(idDialogConfirm,bmp,mask) then
Image1.Picture.Bitmap.LoadFromBitmapHandles(bmp,mask);
end;

Antworten