AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fehler: Das Fenster hat keine Bildlaufleisten
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler: Das Fenster hat keine Bildlaufleisten

Ein Thema von Tiuri · begonnen am 15. Jun 2007 · letzter Beitrag vom 17. Jun 2007
Antwort Antwort
Benutzerbild von Tiuri
Tiuri

Registriert seit: 22. Sep 2006
Ort: Celle
38 Beiträge
 
Delphi 2005 Personal
 
#1

Fehler: Das Fenster hat keine Bildlaufleisten

  Alt 15. Jun 2007, 17:05
Delphi-Quellcode:
Hi,
ich versuche gerade, Icons, die ich mit Ressourcendatein in das Programm einbinde, auch im Programm zu benutzen.
Die RC-Datei icons.rc sieht so aus:
[code:1:6625f5b5d7]R01 ICON "Symbol1.ico"
R02 ICON "Symbol2.ico"[/code:1:6625f5b5d7]
Mit dem Programm BRCC32.EXE erzeuge ich dann die icons.RES
Der Porjektquelltext ist so:
program TehCrypt;

uses
  Forms,
  Classes,
  Windows,
  uMainForm in 'uMainForm.pas{MainForm},
  uLanguage in 'uLanguage.pas',
  uPropertys in 'uPropertys.pas';

{$R lang.RES}
{$R icons.RES} //-> hier wird die Ressourcendatei eingebunden

var
 Ressource: TResourceStream;

begin
  Application.Initialize;
  Application.Title := 'TehCrypt v1.0';
  Application.CreateForm(TMainForm, MainForm);
  Ressource := TResourceStream.Create(hInstance,'R02',RT_GROUP_ICON); //-> Hier lade ich die Ressource
  Application.Icon.LoadFromStream(Ressource); //-> Hier versuche ich, sie zu benutzen
  Application.Run;
end.
Das Compilieren klappt wunderbar, aber wenn ich das Programm starte, kommt folgender Fehler:
Code:
Exception EOutOfResources im Modul TehCrypt.exe bei 0001264C.
Das Fenster hat keine Bildlaufleisten.
.
Das Programm startet anschließend nicht mehr.
Was mache ich falsch?
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#2

Re: Fehler: Das Fenster hat keine Bildlaufleisten

  Alt 15. Jun 2007, 18:38
Tpplication ist so ein merkwürdiges Ding: das ist zwar ein "Fenster", aber ein unsichtbares.
Dem ein Icon zuzuweisen bringt auch nicht viel, weil das Icon von TApplication imho eigentlich nur jenes ist, das der Explorer für die Datei anzeigt.

Du willst das wahrscheinlich zuweisen, weil Delphi das Applikations-Icon automatisch in den Forms anwendet, wenn dort keines gesetzt ist. Allerdings dürfte das - mal geraten - wenn dann in CreateForm stattfinden, d.h. Dein Code wäre so oder so zu spät.

Versuch doch mal, das Icon an FormMain.Icon zu weisen (drauf achten, ob das überhaupt <> nil ist...).
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#3

Re: Fehler: Das Fenster hat keine Bildlaufleisten

  Alt 16. Jun 2007, 00:37
Moin!

Application.Icon kannst Du setzen wann Du willst, das spielt keine Rolle, das Problem ist hier, das die Ressource nicht richtig geladen wird.
Prüfst Du die Größe des Streams nach dem laden, so zeigt dieser 20 Bytes an - ein Icon is größer.

Warum das net richtig geladen wird is mir ein Rätsel

Alternativ kannst Du einfach die API verwenden.

Delphi-Quellcode:
begin
  Application.Initialize;
  Application.CreateForm(TMainForm, MainForm);
  Application.Icon.Handle:=LoadImage(HInstance, 'R02', IMAGE_ICON, 0, 0, LR_LOADREALSIZE);
  Application.Run;
end.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#4

Re: Fehler: Das Fenster hat keine Bildlaufleisten

  Alt 16. Jun 2007, 10:03
20 Bytes? Aaah, da hätte ich aber auch drauf kommen sollen! Das ist kein Rätsel Die RT_GROUP_ICON-Einträge sind eigentlich nur Verwaltungsstrukturen, die auf jeweils für eine bestimmte Auflösung/Farbe gedachte RT_ICON-Einträge verweisen.
TResourceStream ist nun aber nicht mehr, als der Name schon sagt - ein Stream für Einzelresourcen. Die "Icon-Logik", die der Resourcenkompiler beim Auseinanderpflücken und Verteilen in mehrere Resourcen beinhaltet, ist dort nicht enthalten. Da wird also nur die Methode von Sunlight7 funktionieren.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Fehler: Das Fenster hat keine Bildlaufleisten

  Alt 16. Jun 2007, 10:42
Hallo,

bevor Verwirrung entsteht: Das option flag LR_LOADREALSIZE hat Microsoft vor etwa 10 Jahren abgeschafft. Der Bitwert ($80) wird seitdem von LR_VGACOLOR belegt.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Tiuri
Tiuri

Registriert seit: 22. Sep 2006
Ort: Celle
38 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Fehler: Das Fenster hat keine Bildlaufleisten

  Alt 17. Jun 2007, 14:11
Hallo,

danke für die vielen Antworten! Ich habe das Problem jetzt mit LoadIcon gelöst:
Delphi-Quellcode:
program TehCrypt;

uses
  Forms,
  Windows,
  uMainForm in 'uMainForm.pas{MainForm},
  uLanguage in 'uLanguage.pas',
  uPropertys in 'uPropertys.pas';

{$R lang.RES lang.rc}
{$R icons.RES icons.rc}

begin
  Application.Initialize;
  Application.Title := 'TehCrypt v1.0';
  Application.CreateForm(TMainForm, MainForm);
  MainForm.Icon.Handle := LoadIcon(HInstance,'R02_FormIcon');
  Application.Icon.Handle := MainForm.Icon.Handle;
  Application.Run;
end.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:52 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