Autor Beitrag
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mi 20.02.08 22:50 
Hi,

ich schreibe grad an einem programm welches mir meine *.dfm dateien in Quellcode convertieren, den ich dann einfach beim Create des Forms aufrufen kann.

Klappt auch alles wunderbar, nur bei den TImage sachen hab ich probleme :(
Wenn einem TImage z.B. ein Bitmap zugewiesen ist, dann steht in der DFM sowas:

object Image1: TImage
Left: 10
[...]
Picture.Data = {
589199505019AFCC52253
[...]
}

ich nehme mal an, dass das einfach die pixel farben für jedes pixel sind, ABER.. gibt es da eine bessere möglichkeit als das via Scanline sehr mühevoll pixel für pixel zu zeichnen?

Also... ich würde das bei der convertierung halt in ne Scanline-funktion umwandeln, aber das ist irgedwie doch ziemlich umständlich...

jemand ne idee?

Aya

_________________
Aya
I aim for my endless dreams and I know they will come true!
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 20.02.08 23:00 
Nimm die GExperts, dort gibt es den Experten "Components To Code"

_________________
Markus Kinzler.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 20.02.08 23:02 
Wandle die hexadezimalen Angaben einfach in binäre um und pack das in einen Stream. Dabei lass die Bytes bis 424D (exklusive) weg und lade das ganze mit LoadFromStream in ein TBitmap-Objekt ;-).
_frank_
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 343
Erhaltene Danke: 1

Win XP
Delphi 3 Prof / Turbo Delphi Explorer
BeitragVerfasst: Do 21.02.08 01:52 
*dezent auf dfmedit hinweist*
dort habe ich schon eine solche Funktion zum pas-erstellen (zwar ohne bitmaps, aber sind einige spezielle Sachen berücksichtigt [z.b. parent-zuweisung]) und habe dort weitere Möglichkeit drin, die data-werte zu laden (ReadComponentRes)...
ansonsten ist der optimalste weg imho der von jaenicke (habe den nicht gewählt, da ich das ganze noch reversed brauchte)
ich vemute mal, dass du die Funktion auch für TurboDelphi brauchst ;) dafür hatte ich meine auch geschrieben ;)

Gruß Frank

_________________
EB FE (die wahrscheinlich kürzeste Endlosschleife der Welt :) )
BA 01 00 00 00 52 EB 09 BB 4D 11 86 7C FF D3 EB 0D E8 F2 FF FF FF 63 68 61 72 6D 61 70 00 C3
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 21.02.08 16:19 
Wozu ist dass denn gut? Ich meine, es gibt den Formular-Designer, um die Formulare schön zu gestalten. Wieso willst du das in die PAS-Datei einfügen?

Ein weiteres Problem nach den Bitmaps sind PNGs. Da wird die komprimierte Bilddatei in die DFM eingefügt, es wird schwieriger, diese der Bitmap zuzuweisen. Und hast du auch vor, Icons etc. zu intigrieren?

Ich will damit nur ausdrücken, dass du unheimlich viele Einzelheiten beachten musst. Es wird sicher nicht einfach!
Aya Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Do 21.02.08 16:52 
Hi,



user profile iconjaenicke hat folgendes geschrieben:
Wandle die hexadezimalen Angaben einfach in binäre um und pack das in einen Stream. Dabei lass die Bytes bis 424D (exklusive) weg und lade das ganze mit LoadFromStream in ein TBitmap-Objekt ;-).


Danke, das werde ich mal ausprobieren, klingt gut soweit :)



user profile iconmkinzler hat folgendes geschrieben:
Nimm die GExperts, dort gibt es den Experten "Components To Code"


Die GExpoerts können soetwas nicht, zitat der webseite:
Zitat:
Note: This expert will not work with binary properties such as bitmaps, but it can create commented or uncommented property creation code so you can fix this by hand. Also, it will not work perfectly with some components with subcomponents such as TTeeChart/TDataSet/TTreeView and third party tabsheets that do not descend from TTabSheet.


user profile icon_frank_ hat folgendes geschrieben:
*dezent auf dfmedit hinweist*
dort habe ich schon eine solche Funktion zum pas-erstellen (zwar ohne bitmaps, aber sind einige spezielle Sachen berücksichtigt [z.b. parent-zuweisung]) und habe dort weitere Möglichkeit drin, die data-werte zu laden (ReadComponentRes)...
ansonsten ist der optimalste weg imho der von jaenicke (habe den nicht gewählt, da ich das ganze noch reversed brauchte)
ich vemute mal, dass du die Funktion auch für TurboDelphi brauchst ;) dafür hatte ich meine auch geschrieben ;)


Ich hab das ja alles schon selbst geschrieben, mir geht es einzig nur um die Bitmap-daten ;)
Das Parent Handling etc ist ja kein thema.. ausserdem würde deins bei mir nicht gehen, da ich sehr sehr viel mit eigenen komponenten arbeite = viele spezialfälle.

user profile iconYogu hat folgendes geschrieben:
Wozu ist dass denn gut? Ich meine, es gibt den Formular-Designer, um die Formulare schön zu gestalten. Wieso willst du das in die PAS-Datei einfügen?

Ich will mein programm mit FPC compiliren und es nicht alles erst für Lazarus konvertieren.. = ich mache das was der Formulardesigner macht einfach von hand... so kann ich in Delphi gemütlich meine Formulare weiter designen und vor dem compilen mit FPC drücke ich einmal nen knopf und er aktuallisiert konvertiert die ui in FPC Format (natürlich in IFDEFs so das ich bei der Delphi-variante nix kaputt mache)

Aya

_________________
Aya
I aim for my endless dreams and I know they will come true!
Aya Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: So 24.02.08 16:48 
So,

das mit dem Stream hat jetzt geklappt. War etwas tricky die bytes in richtiger reihenfolge in den Stream zu schreiben, aber hat dann funktioniert :)

Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!