Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Von TImage abgeleiteter Typ zeigt Bild nicht an
Kay E. - Do 18.11.10 18:02
Titel: Von TImage abgeleiteter Typ zeigt Bild nicht an
Hallo!
Ich bin gerade dabei, mir einen Typ zu bauen, der im Prinzip ein rechteckiges Bild (60x60 px) darstellt und der noch eine Ereignisbehandlung bekommt, so dass zum Beispiel bei Klick Bild a und bei Rechtsklick Bild b angezeigt wird. Bis jetzt ist der Grundaufbau ohne Ereignis implementiert. Nur: Das Standartbild wird nicht angezeigt. Kann mir bitte jemand zeigen, wo der Fehler liegt?
Hier der Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54:
| unit Wiesenfeld;
interface
uses SysUtils, Math, Controls, ExtCtrls, Graphics, Classes, jpeg;
type TFieldState =(fsEmpty, fsCrystal, fsBottle);
TWiesenfeld=class(TImage) private FFieldState:TFieldState; function GetState: TFieldState; procedure SetState(FieldState:TFieldState); procedure SetPicture(Fieldstate:TFieldstate); public property Fieldstate: TFieldState read GetState write SetState; Constructor Create(Owner:TComponent); override; end;
implementation
Constructor TWiesenfeld.Create(Owner:TComponent); begin inherited Create(Owner); Width:=60; Height:=60; SetState(fsEmpty); end;
function TWiesenfeld.GetState: TFieldState; begin result:=FFieldstate; end;
procedure TWiesenfeld.SetState(FieldState: TFieldState); begin FFieldstate:=Fieldstate; SetPicture(FieldState); Invalidate; end;
procedure TWiesenfeld.SetPicture(Fieldstate: TFieldState); begin case FieldState of fsEmpty: Picture.LoadFromFile('fsEmpty.jpg'); fsCrystal: Picture.LoadFromFile('fsCrystal.jpg'); fsBottle: Picture.LoadFromFile('fsBottle.jpg'); end; end;
end. |
Danke schonmal für eure Mühen!
Moderiert von
Martok: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 18.11.2010 um 17:57
elundril - Do 18.11.10 18:26
eventuell die relativen Pfadangaben?
probier mal
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TWiesenfeld.SetPicture(Fieldstate: TFieldState); var path: String; begin path := ExtractFileDir(Application.Filename); case FieldState of fsEmpty: Picture.LoadFromFile(path + 'fsEmpty.jpg'); fsCrystal: Picture.LoadFromFile(path + 'fsCrystal.jpg'); fsBottle: Picture.LoadFromFile(path + 'fsBottle.jpg'); end; end; |
lg elundril
Kay E. - Do 18.11.10 18:53
Hallo elundril,
Nein, das funktioniert auch nicht. Erstens funktioniert ExtractFileDir(Application.Filename) nicht, er bringt mir ne Fehlermeldung undeclared identifier "Application". Und auch wenn ich die uses Units anpasse, dann bekomm ich trotzdem die Meldung, dass es Filename nicht gibt.
Ich hab aber einfach mal einen absoluten Pfad für das Bild angegeben, was aber am Ergebnis nichts geändert hat.
Ich bin also immer noch für jede Idee offen!
Dude566 - Do 18.11.10 19:24
ExtractFilePath(ParamStr(0)) bezeichnet den Ordner in dem deine Anwendung liegt.
bummi - Do 18.11.10 19:31
Ich würde Dir raten satt TImage TGraphicControl zu verwenden und die Bilddaten entweder aus einer zuweisbaren Imagelist zu ziehen oder LoadFromResource zu verwenden.
Kay E. - Fr 19.11.10 12:56
Hab das Problem noch mit euren beiden Vorschlägen angegangen und muss gestehen: Es hat nichts mit der Komponente zu tun, sondern mit der Erzeugung derselbigen. Ich hab vergessen, der Komponente einen Parent zuzuweisen. Nachdem ich das gemacht hab, hats funktioniert - mit jeder dieser Vesionen ;)
Danke an alle!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!