AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Icon aus Ordner laden und anzeigen nur wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Icon aus Ordner laden und anzeigen nur wie?

Offene Frage von "DiamondDog"
Ein Thema von DiamondDog · begonnen am 15. Mär 2009 · letzter Beitrag vom 18. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
DiamondDog

Registriert seit: 26. Apr 2008
Ort: Hamm
27 Beiträge
 
#1

Icon aus Ordner laden und anzeigen nur wie?

  Alt 15. Mär 2009, 10:39
Hallo Leute,
ich hab da folgendes Problem und zwar im nachfolgenden Code würde ich gerne das TestIco aus einem Ordner laden und anzeigen lassen, leider hab ich keine Ahnung wie ich das anstellen muss und brächte etwas Hilfe.

Delphi-Quellcode:
procedure TQipPlugin.DrawSpecContact(PlugMsg: TPluginMessage);
var ContactId : DWord;
    wStr : WideString;
// Data : Pointer;
    Cnv : TCanvas;
    R : PRect;
    R1 : TRect;
    TestIcon : HICON;
// TestIcon : TICON;
begin
  if not Assigned(FfrmMain) then Exit;

  ContactId := PlugMsg.WParam;

  if (ContactId <> FfrmMain.UniqContactId) then Exit;

  //Data not used here in this example because plugin added only one contact
  //Data := Pointer(PlugMsg.LParam);

  Cnv := TCanvas.Create;
  try

  Cnv.Handle := PlugMsg.NParam;

  R := PRect(PlugMsg.Result);

  SetBkMode(Cnv.Handle, TRANSPARENT);

  TestIcon := LoadImage(0, IDI_INFORMATION, IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR or LR_SHARED or LR_LOADTRANSPARENT);

  DrawIconEx(Cnv.Handle, 8, 2, TestIcon, 16, 16, 0, 0, DI_NORMAL);

  DestroyIcon(TestIcon);

  wStr := 'Text';

  Cnv.Font.Name := 'Tahoma';
  Cnv.Font.Color := clNavy;
  Cnv.Font.Size := 8;
  Cnv.Font.Style := [fsBold];

  R1 := Rect(R^.Left + 26 + FSpecLeft, R^.Top + 1 + FSpecTop, R^.Right, R^.Bottom);

  DrawTextW(Cnv.Handle, PWideChar(wStr), Length(wStr), R1, DT_LEFT);

  finally
  Cnv.Free;
  end;
end;
Ich weiß zwar das das ich es so laden kann:
Delphi-Quellcode:
var TestIcon : TICON;
[...]
    TestIcon := TIcon.Create;
    TestIcon.LoadFromFile(ExtractFilePath(FDllPath)+'Test.ico');
[...]
aber nicht wie ich es anstellen muss, das es nachher angezeigt wird.

Danke schon mal für eure Hilfe.

Mfg Dog

[edit=Luckie]Tippfehler im Titel korrigiert. Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Ico aus Ordner laden und anzeigen nur wie?

  Alt 15. Mär 2009, 10:56
Wo ist das Problem:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Icon: TIcon;
  Path: String;
begin
  Path := ExtractFilePath(ParamStr(0)) + 'Moebius.ico';
  Icon := TIcon.Create;
  try
    Icon.LoadFromFile(Path);
    //DrawIcon(Self.Canvas.Handle, 0, 0, Icon.Handle);
    DrawIconEx(Self.Canvas.Handle, 0, 0, Icon.Handle, 16, 16, 0, 0, DI_IMAGE);
  finally
    Icon.Free;
  end;
end;
Allerdings habe ich es mit DrwaIconEx nicht transparent bekommen, auch wenn ich die Eigenchaft von TIcon Transparent auf true gesetzt habe. Mit DrawIcon wurde es automatisch transparent dargestellt. Nur kann man da keine Größe angeben. Da müsstest du dann ein Passendes Icon benutzen. Umd mit dem LR_SHARED musst du vorsichtig sein. Lies dazu mal was im Windows SDK steht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
DiamondDog

Registriert seit: 26. Apr 2008
Ort: Hamm
27 Beiträge
 
#3

Re: Icon aus Ordner laden und anzeigen nur wie?

  Alt 15. Mär 2009, 11:50
Cool funktioniert super.

Eine Frage hab ich da aber noch und zwar mein Ico hat einen Transparenten Hintergrund und wenn es nachher angezeigt wird ist das was Tranzparent ist schwarz. Wie schaffe ich es das der Hintergrund weiß angezeigt wird?

Ps: Habs auch mit TestIcon.Transparent := True; versucht der Hintergrund bleibt leider schwarz.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Icon aus Ordner laden und anzeigen nur wie?

  Alt 15. Mär 2009, 11:53
Wie gesagt mit DrawIcon wird es transparent. Warum es mit DrawIconEx nicht transparent wird, weiß ich im Moment auch nicht.

PS: Die Dinger heißen Icon und nicht Ico.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
DiamondDog

Registriert seit: 26. Apr 2008
Ort: Hamm
27 Beiträge
 
#5

Re: Icon aus Ordner laden und anzeigen nur wie?

  Alt 15. Mär 2009, 12:14
hm... ok ist nicht schlimm dann pass ich es dem Hintergrund an.
Ist es auch möglich das Icon nicht aus einem Ordner zu laden sondern von der Form zu nehmen?
(Image1)

Ps: Sorry hatte mich bei ico verschrieben sollte Icon heißen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Icon aus Ordner laden und anzeigen nur wie?

  Alt 15. Mär 2009, 19:35
Ich glaube TIcon hat auch eine Methode LoadFromResource.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
DiamondDog

Registriert seit: 26. Apr 2008
Ort: Hamm
27 Beiträge
 
#7

Re: Icon aus Ordner laden und anzeigen nur wie?

  Alt 15. Mär 2009, 21:45
Es gibt leider nur:
LoadFromClipboardFormat
LoadFromStream
LoadFromFile

gibts vll noch eine Möglichkeit?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Icon aus Ordner laden und anzeigen nur wie?

  Alt 15. Mär 2009, 21:50
Lade das Icon mit einem TResourcenStream und von da mit LoadFromResource.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
DiamondDog

Registriert seit: 26. Apr 2008
Ort: Hamm
27 Beiträge
 
#9

Re: Icon aus Ordner laden und anzeigen nur wie?

  Alt 16. Mär 2009, 08:19
Zitat von Luckie:
Lade das Icon mit einem TResourcenStream und von da mit LoadFromResource.
Das bekomme ich irgend wie nicht hin. Versteh nicht ganz wie das gehen soll. Das TResourcenStream ist klarr nur wie krieg ich es vorher in LoadFromResource bzw als was?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Icon aus Ordner laden und anzeigen nur wie?

  Alt 16. Mär 2009, 18:51
Also so schwer kann das doch nicht sein:
Delphi-Quellcode:
procedure TForm4.Button1Click(Sender: TObject);
var
  ResourceStream: TResourceStream;
  Icon: TIcon;
begin
  ResourceStream := TResourceStream.CreateFromID(HInstance, <Deine Icon ID>, 'Icon');
  try
    Icon := TIcon.Create;
    try
      Icon.LoadFromStream(ResourceStream);
      DrawIcon(Self.Canvas.Handle, 0, 0, Icon.Handle);
    finally
      Icon.Free;
    end;
  finally
    ResourceStream.Free;
  end;
end;
Bt. mein BDS2006 kennt für TIcon auch die Methoden LoadFromResourceName und LoadFromResourceID.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 09:29 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