| Autor |
Beitrag |
Delphi-Noobie
      
Beiträge: 31
|
Verfasst: 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  ?
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
      
Beiträge: 997
|
Verfasst: Mo 24.11.03 21:47
Hallo,
erstmal den cursor laden:
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:
Delphi-Quelltext
oder, wenn du den Cursor für die GESAMTE Anwendung ändern willst:
Delphi-Quelltext
_________________ Life is a bad adventure, but the graphic is really good!
|
|
Delphi-Noobie 
      
Beiträge: 31
|
Verfasst: 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
      
Beiträge: 997
|
Verfasst: 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:
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:
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 
_________________ Life is a bad adventure, but the graphic is really good!
|
|
Delphi-Noobie 
      
Beiträge: 31
|
Verfasst: 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!  Wenn jemand weis, was ich stattdessen reinschreiben muss bitte melden. Thx im Vorraus!
_________________ Was du heute kannst verschieben, das besorge lieber morgen.
|
|
Delphi-Noobie 
      
Beiträge: 31
|
Verfasst: 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
      
Beiträge: 997
|
Verfasst: 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 
      
Beiträge: 31
|
Verfasst: 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
      
Beiträge: 997
|
Verfasst: 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:
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:
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 
      
Beiträge: 31
|
Verfasst: 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 Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| implementation
{$R *.dfm} {$R cursor.res} 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
      
Beiträge: 997
|
Verfasst: 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:
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 
_________________ Life is a bad adventure, but the graphic is really good!
|
|
Delphi-Noobie 
      
Beiträge: 31
|
Verfasst: 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
      
Beiträge: 997
|
Verfasst: 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 
      
Beiträge: 31
|
Verfasst: 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
      
Beiträge: 997
|
Verfasst: 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!
|
|