Autor Beitrag
Delphi-Noobie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Fr 21.11.03 21:21 
Hi Leute,

ich hab nen Problem. Wie kann ich einen animierten Mauscursor intern in die exe mit einbauen ohne extern zuzugreifen. Den Ansatz hab ich schon! ich hab die Cursor.ani File in eine eine Cursor.res[Index=1] Datei umgewandelt und sie in den Ordner kopiert, wo meine Delphi exe drin ist. Dann unter Implentation {$R Cursor.res} eingefügt. Aber mit welchem Befehl kann ich den Cursor nun abrufen? Meinetwegen onclick oder so :? ?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
implementation

{$R *.dfm}
{$R Cursor.res}
procedure TForm1.Button1Click(Sender: TObject);
begin
      // <---????
end;

end.

_________________
Was du heute kannst verschieben, das besorge lieber morgen.
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mo 24.11.03 21:47 
Hallo,

erstmal den cursor laden:
ausblenden Delphi-Quelltext
1:
Screen.Cursors[1] := LoadCursor (HINSTANCE, PChar(1));					

Der Index von Cursors MUSS positiv sein. in PChar() den Index oder den Namen des Cursors eintragen (den RESSOURCENnamen!!!).

Dann den Cursor aufrufen:
ausblenden Delphi-Quelltext
1:
Panel1.Cursor := 1					

oder, wenn du den Cursor für die GESAMTE Anwendung ändern willst:
ausblenden Delphi-Quelltext
1:
Screen.Cursor := 1					

_________________
Life is a bad adventure, but the graphic is really good!
Delphi-Noobie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Di 25.11.03 21:20 
Es klappt leider immer noch nicht! Könnte es daran liegen das ich ne falsche Skriptdatei mit dem Borlandcompiler Compiliert habe? Ich hab nen Texteditor geöffnet und reingeschrieben: 1 Cursorfile "cursor.ani" und dann nachdem ich es zu ner Rc-Datei gemacht habe mit dem Borland Compiler zu ner Res Datei umgewandelt. Kommt da vielleicht was anderes hin z.B nicht Cursorfile? Oder was mache ich sonst falsch? :?:

_________________
Was du heute kannst verschieben, das besorge lieber morgen.
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Di 25.11.03 21:32 
Hallo,

nicht "Cursorfile", sondern "Cursor"! Das macht einen riesigen unterschied, denn LoadCursor() suchr NUR nach "Cursor"!!!

Also dien RC sollte etwa so aussehen:
ausblenden Quelltext
1:
1 CURSOR "Cursor1.ani"					

Groß-Kleinschreibung ist egal, sieht aber so gleich übersichtlicher aus, vor allem wenn du mal mehrere Ressourcen hast. Die Anführungszeichen sind hier eigentlich egal, aber bei Dateinamen mit Leerzeichen unbedingt erforderlich!

Dann der Konsolenparameter für den Compiler:
ausblenden Quelltext
1:
Brcc32.exe Resource.rc					


Dann müsste es klappen. Obwohl ich jetzt nicht weiß, ob das auch mir animierten Cursors geht, aber das merkst du ja dann gleich :wink:

_________________
Life is a bad adventure, but the graphic is really good!
Delphi-Noobie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Di 25.11.03 21:37 
Ok ich weis jetzt wo der Fehler liegt undzwar bei Compiler :) Wenn ich in den Texteditor schreibe: 1 Cursor "cursor.cur" dann klappts, aber nicht wenn ich reinschreibe: 1 cursor "cursor.ani" ! Dann sagt er unbekanntes Cursorformat! :cry: Wenn jemand weis, was ich stattdessen reinschreiben muss bitte melden. Thx im Vorraus!

_________________
Was du heute kannst verschieben, das besorge lieber morgen.
Delphi-Noobie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Di 25.11.03 21:41 
Ups hab net gesehen, dass du schon wieder geschrieben hast, deswegen der Text ebend :). Aber das mit der ani-file nimmt er ebend nicht :(. Wenn du rausbekommst wie der richtige Befehl lautet kannste ihn ja nochmal posten ^^.

_________________
Was du heute kannst verschieben, das besorge lieber morgen.
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Di 25.11.03 21:45 
Hallo,

habe nachgeschlagen im PSDK, und es stimmt - man braucht eine andere Funktion, und die heißt LoadImage().

_________________
Life is a bad adventure, but the graphic is really good!
Delphi-Noobie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Di 25.11.03 22:01 
habs ausprobiert..funktioniert aber immer noch nicht :( ich hab in den Texteditor geschriben: 1 loadimage "cursor.ani".. kompiliert, in exe eingefügt und dann mit deinem Befehl versucht aufzurufen, was aber immer noch nicht klappt. Auch wenn ich bei deinem Befehl loadcursor mit loadimage ersetze klappts nicht. Aber warum?

_________________
Was du heute kannst verschieben, das besorge lieber morgen.
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mi 26.11.03 16:47 
Hallo,

nimm mir das jetzt bitte nicht schief, aber du scheinst mir ein absoluter anfönger sein. Daher jetz mal gaaaanz langsam:

die RC-datei bleibt UNVERÄNDERT. Und wenn man hinter einen Namen () schreibt, so ist das eine Funktion - d.h.du musst den Cutrsor mit LoadImage() laden, und zwar so ungefähr:
ausblenden Delphi-Quelltext
1:
Screen.Cursors[1] := LoadImage(HInstance, PChar(1), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE);					


Nun ist es aber GANZ wichtig, dass du den Cursor freigibst. Zu Programmende das heir aufrufen:
ausblenden Delphi-Quelltext
1:
DestroyCursor(Screen.Cursors[1]);					


Und immer schön in der Delphi-Hilfe nachschauen, das hilft immer.

_________________
Life is a bad adventure, but the graphic is really good!
Delphi-Noobie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Mi 26.11.03 20:07 
Das mit dem Anfänger simmt :) Ich habe erst vor kurzem angefangen mit Delphi ( vor 8 Wochen oder so). Aber nochmal zum Problem: Das was du hier grad geschrieben ist mir schon klar, so hab ichs auch gemacht. Nur Wenn ich den TExt im Texteditor so lasse (1 Cursor "cursor.ani") nimmt der Compiler das nicht an, weil es ne ani.File ist und deswegen schreibt er umnbekanntes Cursorformat! Das war meine eingendliche Frage, was ich da statt "Cursor" ebend hinschreiben soll. ich hab schon nen paar Sachen, wie Cursorfile, loadimage, image,... ausprobiert, was er dann zwar zu ner res Datei umformt aber er den Cursor nicht wechselt beim Aufrufen. Hier nochmal mein Sourcecode
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
implementation

{$R *.dfm}
{$R cursor.res}  // Index = 1.. nicht mit '  1 cursor "cursor.ani"  ', da es nicht klappt
procedure TForm1.Button1Click(Sender: TObject);
begin
screen.cursors[1]:=loadimage(hinstance,pchar(1),IMAGE_CURSOR,0,0,LR_DEFAULTSIZE);
screen.cursor:= 1;
end;

end.

Das mit dem destroycursor(screen.cursors[1]) hab ich auch ausprobiert, bewirkt aber trotzdem nix. Ich hoffe du erkennst mein Problem und ich nerve nicht sooo viel :)

_________________
Was du heute kannst verschieben, das besorge lieber morgen.
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mi 26.11.03 21:09 
Hallo,

musst entschuldigen, aber das habe ich auch grade rausgefunden - anscheinen will der RC-Compiler keine ANIs. Villeicht kann man sich ja einen irgendwo runterladen der das kann (offiziell muss es ja gehen, laut der aktuellen PSDK von Februar 2003), aber ich kreige es mit Brcc32 nicht hin.

Also: aus Datei laden:
ausblenden Quelltext
1:
Screen.Cursors[1] := LoadCursorFromFile(PChar('AniTest.ani'));					


Und so wie es aussieht, musst du diesen Cursor NICHT mit DestroyCursor() freigeben. Aber leider kannst du ihn auch nicht in die EXE linken... Sei froh, dass es überhaupt mal geht :wink:

_________________
Life is a bad adventure, but the graphic is really good!
Delphi-Noobie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Mi 26.11.03 23:21 
Jo mit loadfile, also zugreifen indem ich die exe extern öffne, hatte ich ja vorher auch schon :). Aber trotzdem danke für die hilfe, ich hoffe ich finde irgendwo den Befehl Um ani-Files intern einzubauen. Gruß Delphi-Noobie

_________________
Was du heute kannst verschieben, das besorge lieber morgen.
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Do 27.11.03 21:58 
Hallo,

es MUSS gehen, nur unterstützt es dein RC-Compiler nicht, du erhälst ja - so wie ich - die Meldung, dass das Dateiformat nicht unterstützt wird. Ich habe im Internet schon ähnliches gelesen.

Die Frage ist: woher kriegst du jetzt einen RC-Compiler, der ANI unterstützt???

_________________
Life is a bad adventure, but the graphic is really good!
Delphi-Noobie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Do 27.11.03 22:20 
Jo keine Ahnung..gibts sowas überhaupt..nen anderen Compiler? Wenn ja, müsste man nur noch rausfinden wie er heißt und wo es ihn gibt aber da kann ich wahrscheinlich lange suchen :(

_________________
Was du heute kannst verschieben, das besorge lieber morgen.
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Do 27.11.03 22:52 
Hallo,

so was gibt es, was meinst du, wie die es mit MSVC++ oder VBA oder KeineAhnungWas machen? Wenn du dir mal den Konsole-Output anschaust, siehst du, dass Borland den Compiler geschreiben hast. Es muss auch noch einen von MS geben, und der kann das mit ziemlicher Sicherheit, da die ja auch die Richtlinien rausgeben (also die PSDK und so).

Villeicht kennst du ja jemanden mit MSVC++, dann kannst du es ja mal da kompilieren (versuchen halt). Wenn nich, villeicht gibt's das ja im Internet was. BRCC32.EXE, RCC32.EXE, RCC.EXE, usw. Ich schätze mal, die ohne das "B" sind von MS, damit müsste es klappen. Probieren geht über studieren... Da hier eindeutig ein Softwarefehler vorliegt (in meinen Augen), bleibt dir nix anderes übrig.

_________________
Life is a bad adventure, but the graphic is really good!