Form.icon

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
MiPraSo
Beiträge: 3
Registriert: Di 23. Mai 2023, 18:47

Form.icon

Beitrag von MiPraSo »

Hallo,

zu meinem Hintergrund: Ich habe mit TuroPascal angefangen bin dann bei Delphi gelandet. Meine letzte DLL habe ich für den html Editor Phase 5 entwickelt, sie ist heute noch bei mir im Einsatz und als PD verfügbar, für den oben genannten Editor. Dann habe ich viel mit PHP und MySQL gearbeitet. Durch eine gesundheitliche Auszeit seit Februar konnte ich mich jetzt endlich mal mit Lazarus beschäftigen. Leider ist Dokumentation für Lazarus in Papierform oder im www nicht so gut wie damals die 1 Meter Papier von Borland.

Ich konnte schon einiges selbst lösen und auch hier im Forum und auch über das www finden.

Ich suche eine Lösung zu einem Grafikproblem für das Form.Icon links oben auf den Forms.
Mein Ansatz für mein Projekt ist folgender:
Ich benötige in einigen meiner Formulare die gleiche statische Grafik zur Anschauung.
In einer Form habe ich diese ca. 15 verschieden Bilder in Timage über das manuelle „Laden“ abgelegt. In diesen Formular werden sie dann im:

Code: Alles auswählen

procedure TBilderForm.FormCreate(Sender: TObject);
begin
  Picture50 := TPicture.Create;
  Picture50.Assign(Image50.Picture);
….
end;
generiert und als public bekannt gemacht.

In den Aufrufen der anderen Formulare kopiere ich die Bilder dann in die leeren Timage Komponente:

Code: Alles auswählen

procedure Form1.FormCreate(Sender: TObject);
begin
  IMG1.Picture.Assign(Picture50);
…
 end;   
Dies funktioniert soweit ohne Probleme.

Jetzt wollte ich dies auch für das Form.Icon so übernehmen. Grundidee war, ich lade das Icon auch manuell in Timage, was auch funktioniert und alle Formulare können es beim FormCreate setzen und anzeige. Ich habe viel probiert, mit wenig Erfolg, es wird nicht angezeigt oder der Compiler meldet eine Verletzung der Typenkonvertierung.

Bin für Ideen offen…

Michael

System:

Windows 10 Pro Version 22H2, 64-Bit-Betriebssystem, x64-basierter Prozessor

Lazarus 2.2.6, FPC 3.2.2, i386-win32-win32/win64
Zuletzt geändert von MiPraSo am Di 23. Mai 2023, 22:48, insgesamt 1-mal geändert.

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 126
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Form.icon

Beitrag von Jorg3000 »

Hi!
Versuch mal:

Code: Alles auswählen

Form1.Icon.Assign( Picture50.Bitmap );
Hab's nicht getestet, sondern im Quellcode gesehen, dass TIcon.Assign neben .ico nur von TRasterImage lesen kann, z.B. TBitmap.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5954
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Form.icon

Beitrag von af0815 »

Hallo und willkommen,

ein Hinweis am Anfang, wenn du bei den Dekorationen der Forms oder anderer sichtbarer Objekte was änderst, kann es es sein, das du auf Probleme stösst. Die LCL ist ausgelegt auf verschiedenen Plattformen zu laufen. Daher kann es sein, das etwas unter Windows noch funktioniert, unter einem Linux aber nicht mehr. Das kommt daher das bei vielen Komponenten, die originalen Komponenten des Widgetsets von der LCL gewrapped werden, ähnlich wie bei Delphi die VCL das macht. Nur unterscheiden sich LCL und VCL in den tieferen Schichten enorm.

Daher stellt sich immer die Frage, in deinem Fall - bleibt das eine Windows only Applikation oder sollte die auf verschiedenen Widgetsets/Plattformen laufen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MiPraSo
Beiträge: 3
Registriert: Di 23. Mai 2023, 18:47

Re: Form.icon

Beitrag von MiPraSo »

Jorg3000 hat geschrieben:
Di 23. Mai 2023, 22:45
Hi!
Versuch mal:

Code: Alles auswählen

Form1.Icon.Assign( Picture50.Bitmap );
Hab's nicht getestet, sondern im Quellcode gesehen, dass TIcon.Assign neben .ico nur von TRasterImage lesen kann, z.B. TBitmap.
Das habe ich auch schon probiert, hat nicht funktioniert. Ich werde weiter forschen. :)

MiPraSo
Beiträge: 3
Registriert: Di 23. Mai 2023, 18:47

Re: Form.icon

Beitrag von MiPraSo »

af0815 hat geschrieben:
Mi 24. Mai 2023, 07:42
Hallo und willkommen,

ein Hinweis am Anfang, wenn du bei den Dekorationen der Forms oder anderer sichtbarer Objekte was änderst, kann es es sein, das du auf Probleme stösst. Die LCL ist ausgelegt auf verschiedenen Plattformen zu laufen. Daher kann es sein, das etwas unter Windows noch funktioniert, unter einem Linux aber nicht mehr. Das kommt daher das bei vielen Komponenten, die originalen Komponenten des Widgetsets von der LCL gewrapped werden, ähnlich wie bei Delphi die VCL das macht. Nur unterscheiden sich LCL und VCL in den tieferen Schichten enorm.

Daher stellt sich immer die Frage, in deinem Fall - bleibt das eine Windows only Applikation oder sollte die auf verschiedenen Widgetsets/Plattformen laufen.
Danke für den Hinweis,

im Moment ist erst mal Windows mein Ziel, ich konvertiere im Moment ein fast 20 Jahre altes html Projekt (ist immer noch online) in ein Programm, als Übung.
Habe schon einen Parser/Konverter erstellt, der meine codierten html Tabellen in xml übersetzt, diese lassen sich dann in ein Stringgrid einlesen.

Ubuntu und raspberry pi ist auch ein Ziel, sind hier auch im Einsatz.

Endziel ist mit laz4android2.0.12 eine APP daraus zu erstellen.
Zuletzt geändert von MiPraSo am Mi 24. Mai 2023, 23:31, insgesamt 1-mal geändert.

wp_xyz
Beiträge: 4615
Registriert: Fr 8. Apr 2011, 09:01

Re: Form.icon

Beitrag von wp_xyz »

MiPraSo hat geschrieben:
Mi 24. Mai 2023, 22:55
Das habe ich auch schon probiert, hat nicht funktioniert. Ich werde weiter forschen. :)
Wenn ich das Problem richtig verstanden habe, geht es darum, eines der im Programm verfügbaren Bilder (TPicture) als Form-Icon zu verwenden. Das funktioniert einwandfrei - siehe beigefügtes Programm (auf den Button klicken, und es wird ein png-Bild geladen und als Form-Icon dargestellt). Wenn es das bei dir nicht tut, muss etwas anderes faul sein.
Dateianhänge
picToIcon.zip
(2.24 KiB) 12-mal heruntergeladen

Antworten