Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Icon aus DLL laden (https://www.delphipraxis.net/7898-icon-aus-dll-laden.html)

Christian Seehase 8. Nov 2003 12:19

Re: Icon aus DLL laden
 
Moin Homer,

hast Du auch schon mal die Kurzform probiert?

Delphi-Quellcode:
Function Icon_Lesen_GU(icon_nr_s : String) : TIcon;

var
  h :HINST;

begin
  Result := nil;
  h := LoadLibrary('image.dll');
  try
    if h <> 0 then
    begin
      Result       := TIcon.Create;
      Result.Handle := LoadIcon(h, PChar(icon_nr_s));
    end;
  finally
    FreeLibrary(h);
  end;
end;
Für Bitmaps gibt's auch LoadBitmap.

HomerGER 9. Nov 2003 14:15

Re: Icon aus DLL laden
 
hier liegt die würze in der kürze
danke
aber nur den handle übergeben .. hmm und nicht das icon ? verstehen tu ich es aber nicht

Christian Seehase 9. Nov 2003 14:26

Re: Icon aus DLL laden
 
Moin Homer,

da das Result als TIcon deklariert ist, wird ja nicht nur das Handle übergeben.
Bei derartigen Funktionsergebnistypen würde ich das eh' eher so machen, dass das Ergebnis als Parameter zurückgeliefert wird, und nicht im Result. Ist aber wohl auch Geschmackssache.

HomerGER 9. Nov 2003 17:11

Re: Icon aus DLL laden
 
geschmackssache ???
nur so geht es. also bei icons.

Christian Seehase 9. Nov 2003 20:19

Re: Icon aus DLL laden
 
Moin Homer,

wenn ich das so mache, kann ich das Icon, was ich zurückerhalten will auch als Parameter übergeben:

Delphi-Quellcode:
function (const AsIconname : string;const AicResult : TIcon) : boolean; // true = Success
var
  h :HINST;

begin
  Result := false;
  h := LoadLibrary('image.dll');
  try
    if h <> 0 then begin
      AicResult.Handle := LoadIcon(h, PChar(AsIconname));
      Result := true;
    end;
  finally
    FreeLibrary(h);
  end;
end;
Die Funktion lässt sich dann nur nicht so schön einbinden, aber ich habe eine bessere Übersicht über die belegten Resourcen.

HomerGER 9. Nov 2003 21:24

Re: Icon aus DLL laden
 
ne las mal deine kurzform funktioniert wunderbar
genau so wie es haben wollt
ich glaube es gib mit TICON ein generelles Problem
auch aus einer resource oder dll zu laden

hier meine function um es aus dll usw zu extrahieren

Code:
//******************************************************************************
// HauptFunction
//Icon aus exe dll usw ins Image ausgeben
Procedure Icon_Extract_GU(input_s : String; kompo_s : String);
var
bild_path_s : String;
icon : TIcon;
path_s : String;
pos_i : Integer;
index_i : Integer;
begin

    try
        //Platzhalter ersetzen //für %Root% und so
        bild_path_s := Platzhalter_Ersetzen_GU(input_s);

        //Alles rücksetzen
        icon := TIcon.Create;
        path_s := '';

        //Kein Komma verhanden
        if pos(',', bild_path_s) = 0 then
         begin
            bild_path_s := bild_path_s + ',0';
            pos_i := pos(',', bild_path_s);
        end
        //Komma vorhanden
        else
        begin
            pos_i := pos(',', bild_path_s);
        end;

        //Path filtern
        path_s := copy(bild_path_s, 1, pos_i - 1);

        //Index filtern
        index_i := StrToInt(copy(bild_path_s, pos_i + 1, Length(bild_path_s)));

        icon.Handle := ExtractIcon(hInstance,PChar(path_s),index_i);

        (Haupt_Form.FindComponent(kompo_s) as TImage).Picture.Icon := icon;
    finally
        icon.Free;
    end;
end;

tcoman 8. Aug 2015 18:52

AW: Re: Icon aus DLL laden
 
Zitat:

Zitat von HomerGER (Beitrag 84002)
ich hab das gleich problem
mein code
Code:
//******************************************************************************
//Global
//Icon aus Image.dll
Function Icon_Lesen_GU(icon_nr_s : String) : TIcon;
var
lib_h : THandle;
res_s : TResourceStream;
icon_ic : TIcon;
begin
    lib_h := LoadLibrary('Image.dll');

    if (lib_h <> 0) then
    begin
        res_s := TResourceStream.Create(lib_h, icon_nr_s, RT_ICON);
        icon_ic := TIcon.Create;
        try
            icon_ic.LoadFromStream(res_s);
            Result := icon_ic;
        finally
            res_s.Free;
            icon_ic.Free;
        end;
        FreeLibrary(lib_h);
    end;
end;
mit einem anderen progamm hab ich mal in die ddl geschaut, ist alles drin
er zeigt mir immer wieder die resurce nicht gefunden an
der code ist doch richtig ? warum geht es nicht

Grüß Dich HomerGER,
in der DLL müssen die Namen der Icons in
GROSSBUCHSTABEN stehen! Vllt erklärt das deine
Fehlermeldung "nicht gefunden".

Gruß,
tcoman

DeddyH 8. Aug 2015 19:53

AW: Icon aus DLL laden
 
Der letzte Post ist fast 12 Jahre her :shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr.
Seite 3 von 3     123   

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