AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Icon aus Exe funktioniert nur auf Button?
Thema durchsuchen
Ansicht
Themen-Optionen

Icon aus Exe funktioniert nur auf Button?

Ein Thema von Flodding · begonnen am 5. Mär 2009 · letzter Beitrag vom 5. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#1

Icon aus Exe funktioniert nur auf Button?

  Alt 5. Mär 2009, 13:00
Huhu und Guten Tag zusammen...

ich hab im Internet diese Funktion gefunden, die aus 2 Teilen besteht...

Delphi-Quellcode:
uses
  ShellApi;

// Gibt Anzahl Icons aus EXE, DLL oder ICO.
function TotalNumberOfIcons(const FileName: String): Integer;
begin
  if not FileExists(FileName) then Result := -1
// else Result := ExtractIcon(HInstance, PChar(FileName), -1); Fehler korrigiert.
    else Result := ExtractIcon(HInstance, PChar(FileName), $FFFFFFFF);
end; {Popov}
Delphi-Quellcode:
uses
  ShellApi;

// Gibt Icon zurück aus EXE, DLL oder ICO.
function GetIconFromFileA(const FileName: String; Index: Word;
  Icon: TIcon): Boolean;
begin
  Result := False;
  if (TotalNumberOfIcons(FileName) < 1) or
     ((Index + 1 ) > TotalNumberOfIcons(FileName)) then
    Exit;

  Icon.Handle := ExtractIcon(HInstance, PChar(FileName), Index);
  Result := True;
end; {Popov}
wenn ich jetzt geticonfromfilea aus einem button aufrufe...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  AIcon: TIcon;
begin
  AIcon := TIcon.Create;
  try
    if GetIconFromFileA('c:\windows\explorer.exe', 0, AIcon) then
    form1.canvas.Draw(0, 0, AIcon);
  finally
    AIcon.Free;
  end;
end;
... dann zeigt er mir das icon in der oberen linken ecke meines forms an... supiklasse

verwende ich das ganze jetzt aber so:

Delphi-Quellcode:
procedure ExeSearch(ADirectory: String);
var
  SS: TSearchRec;
  AIcon: TIcon;
begin
    if FindFirst(ADirectory + '\*.exe', faAnyFile, SS)=0 then
    begin
      repeat
        with form1 do begin

AIcon := TIcon.Create;
try
if GetIconFromFileA('c:\windows\explorer.exe', 0, AIcon) then
canvas.Draw(0, 0, AIcon);
finally
AIcon.Free;
end;

        Programmpfada[a] := ADirectory + '\' + SS.Name;
        listbutton[y] := TXiButtonLeft.Create(form1.ScrollBox1);
        ListButton[y].Caption:=(GetVersionInfo(ADirectory + '\' + SS.Name, 'FileDescription'));
        listbutton[y].left:=0;
etc...
        listbutton[y].Parent := form1.ScrollBox1;
        ListButton[y].OnClick:= ListButton_Click;
        ListButton[y].Name:='List' + inttostr(y);
        a:=a+1;
        x:=x+22;
        y:=y+1;
        end;
      until FindNext(SS)<>0;
      FindClose(SS);
    end;
end;
dann wird mir kein icon oben links in der ecke angezeigt... warum?
Flo
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Icon aus Exe funktioniert nur auf Button?

  Alt 5. Mär 2009, 13:03
Das ExeSearch keine Methode deines Formulares ist wird für Canvas irgendeine globale Variable genommen und dort die Draw-Methode aufgerufen anstatt des Canvas deines Formulares.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Icon aus Exe funktioniert nur auf Button?

  Alt 5. Mär 2009, 13:04
Auf welchen Canvas willst Du denn da zeichnen?

[edit] Roter Kasten [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#4

Re: Icon aus Exe funktioniert nur auf Button?

  Alt 5. Mär 2009, 13:05
procedure TForm1.Button1Click ist eine Methode, du hast also Zugriff auf dein Formular. procedure ExeSearch ist eine "stinknormale" Prozedur ohne Zugriff auf deine Form-Klasse daran wird's wohl liegen.

// edit : Roter Kasten? Welcher rote Kasten?
Ralph
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Icon aus Exe funktioniert nur auf Button?

  Alt 5. Mär 2009, 13:06
Zitat:
Delphi-Quellcode:
        with form1 do begin

AIcon := TIcon.Create;
try
if GetIconFromFileA('c:\windows\explorer.exe', 0, AIcon) then
canvas.Draw(0, 0, AIcon);
finally
AIcon.Free;
end;

        Programmpfada[a] := ADirectory + '\' + SS.Name;
ich habs doch in der with drinne...
Flo
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#6

Re: Icon aus Exe funktioniert nur auf Button?

  Alt 5. Mär 2009, 13:07
Mach doch einfach mal 'ne Methode draus...
Ralph
  Mit Zitat antworten Zitat
Flodding

Registriert seit: 26. Dez 2007
Ort: Kiel
121 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Icon aus Exe funktioniert nur auf Button?

  Alt 5. Mär 2009, 13:11
Zitat von DeddyH:
Auf welchen Canvas willst Du denn da zeichnen?

[edit] Roter Kasten [/edit]
was für ein roter kasten?

Zitat von taaktaak:
Mach doch einfach mal 'ne Methode draus...
wie mach ich das? procedure?!
Flo
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Icon aus Exe funktioniert nur auf Button?

  Alt 5. Mär 2009, 13:14
Oben im interface-Teil im private-Abschnitt des Formulars:procedure ExeSearch(ADirectory: String); Und im implementation-Teil dannprocedure TForm1.ExeSearch(ADirectory: String);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Icon aus Exe funktioniert nur auf Button?

  Alt 5. Mär 2009, 13:14
[ot]
Zitat von Flodding:
ich habs doch in der with drinne...
with hat der Teufel persönlich erfunden....wer das benutzt wird in der Debug Hölle landen.
[/ot]

´tschuldigung

Wie die anderen schon geschrieben haben, deine Funktion/Proedur hat nichts mit der Form zu tun.
Deine Form ist "zufällig" in deiner Prozedur bekannt, weil sich diese Prozedur wahrscheinlich in der Form unit befindet und die Form global dort deklariert ist.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Icon aus Exe funktioniert nur auf Button?

  Alt 5. Mär 2009, 13:15
Zitat von Flodding:
ich habs doch in der with drinne...
Bitte kein Zugriff auf die global angelegte globale Variable: "with form1 do begin"
Das ist der übel von vielen Problemen und bei deiner obigen Formatierung sehr leicht zu übersehen.
Bist du dir auch sicher das form1 auch die Instanz deines Formulares was du gerade siehst?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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