Entwickler-Ecke

Open Source Projekte - TXStyleForm - Formular mit Skin


Anonymous - So 09.05.04 21:31
Titel: TXStyleForm - Formular mit Skin
Hi

Ich hab bastle zur Zeit Mal wieder (immer zwischendurch) was (ich aber aber sicher nicht verwenden werde :P) und veröffentliche jetzt mal die erste öffentliche Beta.
Es handelt sich dabei um eine von TForm abgeleitete Klasse, die es ermöglicht dem Formular einen "Skin" zu verpassen. Dazu muss eine Komponente (TXStyleControl) aufs Formular gelegt werden und im Quellcode


Delphi-Quelltext
1:
2:
3:
4:
5:
uses
  Windows, ..., StdCtrls;

type
  TForm1 = class(TForm)


in


Delphi-Quelltext
1:
2:
3:
4:
5:
uses
  Windows, ..., StdCtrls, xstyleform;

type
  TForm1 = class(TXStyleForm)


geändert werden. Nach der Auswahl einer Datei (Property OpenFile von TXStyleControl) kann das Programm gestartet werden und hat das neue Aussehen.

Das besondere (?) hierbei ist, dass das MainForm (falls vorhanden) nicht über die Titelleiste rutscht, sondern an Ort und Stelle bleibt.

Nicht funktionierende Properties:


bekannte Probleme:

  1. Ein MainMenu ist deaktiviert wenn a: die Titelleiste aktiv ist und b: das Formular aktiv ist (erst seit kurzem :-/)
  2. Das Formular wird bei Klick auf das MainMenu nicht aktiviert (hängt wohl mit 1a zusammen)


Ansonsten darf der Code frei verwendet werden, aber ein Hinweis wäre nett, außerdem sollte der Code nicht unter eigenem Namen einfach so neu veröffentlicht werden und das übliche Blaschwall.

UPDATE (13.05)
Property Position implementiert

UPDATE (14.05)
Properies Align und Enabled implementiert, Constraints kann zur Designtime gesetzt werden

UPDATE (15.05)
Constraints, WindowState und FormStyle implementiert, Extraschriftart für deaktiviertes Fenster (neues Format für Skins)

Screenshot: http://home.arcor.de/obbschtkuche/screens/XStyleForm.png
Download: http://home.arcor.de/obbschtkuche/down/xstyleform.zip inkl. 3 Skins und Beispielprogramm (Package für D6)

Wer Fehler findet darf sie mir gerne aushändigen


matze - Mo 10.05.04 15:10

cool !!! mach bloß weiter so !! die meisten leute suchen sowas schon ewig !!!


StefanH - Do 13.05.04 19:47
Titel: Re: TXStyleForm - Formular mit Skin
obbschtkuche hat folgendes geschrieben:
Wer Fehler findet darf sie mir gerne aushändigen


bitte :D

Zitat:
BorderStyle: bsSingle: Standard; bsSizeable: über Scrollbars simulierbar


irgendwie ist das Sizeable bei mir !?!?

dann wollt ich ein Bestehendes Progg umstylen, bloß er verschiebt das ganze in die Linke ecke, wenn ich die Exe dann vergrößer, dann stimmts wieder, in dem Fall macht er aber acuh kein Close-Bild...

und wenn ich das Fenster verkleiner, flackert das.

:wink2: , Stefan


Anonymous - Do 13.05.04 19:56
Titel: Re: TXStyleForm - Formular mit Skin
StefanH hat folgendes geschrieben:
irgendwie ist das Sizeable bei mir !?!?


Im Prinzip schon, aber es gibt keine Scrollbars.



Was meinst du mit ", wenn ich die Exe dann vergrößer,"? Meinst du das Formular?

Das Flackern lässt sich leider nicht umgehen. Oder... Vielleicht doch, ich sehs mir mal an :P


StefanH - Do 13.05.04 20:04

dann sollte man das im Prinzip auch verhindern... :roll:

Zitat:
Was meinst du mit ", wenn ich die Exe dann vergrößer,"? Meinst du das Formular?


:oops: ähja... das Formular... :roll:


Anonymous - Fr 14.05.04 16:45

So, Align funzt jetzt, Enabled auch, und bsDialog und bsSingle kann man ebenfalls als funktionierend bezeichnen.


StefanH - Fr 14.05.04 20:42

hmm... vorhin hat er das Close-Bild nciht geladen, etz gehts wieder... komisch

Achja... Constraints wären nett :roll:


Anonymous - Sa 15.05.04 12:25

So, Constraints sind fertig, sowie FormStyle und WindowState. Die Skins haben ein neues Format, der Loader ist aber abwärtskompatibel. (Und zukünftige Versionen werden sowohl abwärtskompatibel als auch aufwärtskompatibel sein :P )
Ab dieser Version gibt es eine Extraschriftart für die Titelleiste von einem deaktiviertem Fenster.
Außerdem habe ich die Möglichkeit, die Skineinstellungen in .ini-Dateien zu speichern und daraus zu lesen entfernt, da sie nur bei der Urur-Version von Bedeutung war.


StefanH - Mo 17.05.04 17:16

oooooooooook, nachdem ich erstmal Types aus den uses geschmissen hab, und dann noch irgendwo ein override gekillt hab, damit ich das überhaupt installen konnte, erstmal keine Contraints gesehen. Na gut, für diesen Fall hab ichs eh nicht gebraucht, und hab mir niks gedacht. Aaaaaaaber: Etz krieg ich eine Fehler meldung, dass die eigenschaft "IsDisabledCpaitonFont" (oder ka... irgendwas halt) nicht existiert :?


MfG,


Anonymous - Mo 17.05.04 17:18

*shock*

Hast du es komplett neuinstalliert, in den selben Ordner, oder nur neu Compiliert und wann kommt die Fehlermeldung...? :P


StefanH - Mo 17.05.04 17:22

Fehlermeldung: beim Starten des Proggs

Ja in den gleichen Ordner... ob ichs neu installiert hab? vermutlich schon, ich hab ja einiges probiert... ;)


Anonymous - Mo 17.05.04 17:43

Du hast also das Package geöffnet und Compile (oder Kompilieren) geklickt?


StefanH - Mi 19.05.04 15:06

nö. ich hab das in ein anderes Package gedingst, weil
Zitat:
Download: http://home.arcor.de/obbschtkuche/down/xstyleform.zip inkl. 3 Skins und Beispielprogramm (Package für D6)


:roll:


Anonymous - Mi 19.05.04 15:42

Und DAS hast du neukompiliert? :P (Bzw. das alte vorher deinstalliert oder sonstwas gemacht)

Wenn der die Properties nicht findet dürfte das nämlich eigentlich nur daran liegen.


StefanH - Mi 19.05.04 15:48

jaaaaaaa!


O'rallY - Mi 19.05.04 21:15

Wieso lässt du keine Änderung am Hintergrund der Form zu?
Aber ansonsten: Gut!
Noch was: Zur Laufzeit lässt sich da Design nicht ändern?


Anonymous - Mi 19.05.04 21:26

Danke für das Lob :D

ähm... Hintergrund? :roll:

Style wechseln funktioniert so:


Delphi-Quelltext
1:
2:
XStyleControl.LoadFromFile('deinstyle');
XStyleControl.Update(self, false);


Wobei das ",false" auch weggelassen werden kann, ist mehr oder weniger egal.


O'rallY - Do 20.05.04 13:59

obbschtkuche hat folgendes geschrieben:
ähm... Hintergrund? :roll:

Ich meinte damit die Hauptfläche der Form. Also da wo man die Kompos platziert. Aber ich denke, das ließe sich mit einem einfach TImage realisieren ;).

P.S.: Grad noch was eingefallen. Schon mal über abgerundete Ecken und Anti-Alasing nachgedacht?


Anonymous - Do 20.05.04 14:20

Aaah, jetzt hab ichs verstanden ;)

Um genau zu sein, das Formular selbst wird garnicht verändert, nur das drumherum (ein zweites Formular)

Abgerundete Ecken werden denke ich auf jeden Fall noch kommen, nur eine Frage der Zeit :P
Dass sich das Formular jedes Mal um ein paar Pixel erhöht wenn der Skin gewechselt wird werde ich auch bei der nächsten Version beseitigen.


O'rallY - Do 20.05.04 16:17

Hab nen Bug entdeckt. Wenn man die Form unten links verkleinert und sie nicht weiter verkleinerbar ist, bewegt sich die gesamte Form nach rechts.

//edit: ist allgemein so, wenn man die Form von der linken Seite verkleinert.

//edit2: Noch was: wie wärs, wenn du einfach in die styledateien die Hintergrundfarbe der Form speichern würdest?


StefanH - Mi 26.05.04 15:58

komsisch... mit D7 funzt es :cry:


Anonymous - Mi 26.05.04 16:00

@Orally: Ich wollte eigentlich an dem Formular selbst durch die Styles nichts ändern...

@Stefan: Die Property heißt "IsDisabledCaptionFont"?


StefanH - Mi 26.05.04 16:02

öh nö... :mrgreen:
DisabledCaptionFont.Charset


StefanH - Fr 28.05.04 20:21

Got it! da war irgendeine .dcu zuviel


Stefan-W - Fr 28.05.04 20:35

ist dafür vielleicht auch noch irgendwann ein Skin-Editor in Planung???

Stefan


raziel - Fr 28.05.04 21:01

Sourcecode hat folgendes geschrieben:
// ToDo:
// Styleeditor mit Preview zur Designzeit

sieht fast so aus... ansonsten könnt ich mich der sache annehmen... ;-)

raziel


Cyberaxx - Fr 04.06.04 01:05

Habs mir grad mal gezogen deine KOmponente und ich muss sagen sieht soweit ja nicht schlecht aus, es ist ja die Möglichkeit gegeben einen eigenen Skin zu fertigen und ihn zu speichern.

Wie sieht es denn mit einer kleinen erkährung aus welches Image wohin gehört, oder wie der Skin gespeichert wird? Muss ich mir dafür den Quelltest Deiner Komp. reinzihen oder verätst Du es mir auch so?

//Edit:
Hab mir den Quellcode angesehen da steht es schön beschrieben , wobei es eigentlich nicht schlecht wäre es irgendwie in eine Hilfe oder Textdatei zu schreiben


O'rallY - Fr 04.06.04 14:59

Wenn du n eigenen Skinpack mache willst, ersteinmal alle nötigen Dateien im BMP-Format in nem Grafikprogramm erstellen und dann in die Komponent laden. Dann kannst du mit SaveFile den Skin in eine kompakte kompatible dat-Datei speichern.


Cyberaxx - Fr 04.06.04 17:24

Das hab ich aber ne frage bleibt offen...

Mein Skin ist abgerundet, welche farbe wird als Transparent angesehen wenn das überhaut möglich ist...


Anonymous - Fr 04.06.04 17:52

Das ist in der aktuellen Version nicht möglich. Sobald ich Mal wieder Zeit dafür habe, werde ich mir aber ein paar von diesen Sachen vornehmen.


Ikarus7 - Mo 07.06.04 13:54

obstkuche deine komponente ist wirklich genial.
ich brauche allerdings deine hilfe.
ich will daß mein programm automatisch den winamp-skin annimt, wie kann ich das hinbekommen ?


StefanH - Fr 11.06.04 21:43

toll wäre auq, wenn man den normalen Windows style auq benutzen könnte, quasi den Style abstellen.


Anonymous - So 13.06.04 15:51

Zur Zeit programmiere ich nicht mit Delphi und wahrscheinlich fange ich auch erst in einiger Zeit wieder damit an. Sobald ich mich wieder damit beschäftige werde ich das aber einbauen.


StefanH - So 13.06.04 15:56

traurig, traurig :mrgreen:


Chris1308 - Sa 19.06.04 15:21

Hi,
wenn du nicht mehr daran weiterschreibst, darf ich mir erlauben daran weiter zu schreiben? Ich hab' da einige Bugs und unter Umständen ließen sich noch ein paar Features implementieren. :)
Bitte also hiermit um deine Erlaubnis das weiterzuentwickeln und auch unter meinem Namen zu veröffentlichen (selbstverständlich mit dem Hinweis, dass die gesamte Grundlage von dir stammt und ich das nur weiterentwickelt habe).

Wenn ich das tun dürfte, so würde ich mich freuen, wenn du mir (vllt. per PN) zukommen lassen könntest, wie die Style-Dateien aufgebaut sind. :)

Chris


Anonymous - Sa 19.06.04 15:33

Noch habe ich das Projekt nicht beendet, also muss ich Dich leider erstmal enttäuschen. Ich hab aber auch gerade mein Delphi wiedermal angeschmissen :mrgreen:

//Edit:

Transparenz ist jetzt soweit fertig, es fehlt nur noch ein bissl feintuning :mrgreen:


Klaus-B.Schmidt - Sa 19.06.04 17:49

kann mir jemand sagen, wie ich das in ein mdi form reinbekomme ?

MfG


StefanH - Sa 19.06.04 20:29

Klaus-B.Schmidt hat folgendes geschrieben:
kann mir jemand sagen, wie ich das in ein mdi form reinbekomme ?


gar nicht. :roll:


Klaus-B.Schmidt - Di 22.06.04 13:38

kann man das umschreiben bzw. kann das jmd. uumschreiben, dass ich ds auch für ne mdi form(NICHT mdi child) benutzen kann, da es bescheiden aussieht, wenn alle weiteren fenster die aufgehen mit dem style sind, nur das mdi nciht (startform)

MfG


StefanH - Do 24.06.04 20:21

Hintergrundbild / - farbe?


Anonymous - Do 24.06.04 20:28

http://www.delphi-forum.de/viewtopic.php?p=159317#151626

:roll:

Neues Release muss immernoch ein bissl warten, im Moment beschäftige ich mich mit einem anderen Progrmam :P


StefanH - Do 24.06.04 20:33

:roll: aber wenn der Style eine Veränderung brauch? :mrgreen:


dann mach dein Progrmam mal weiter... :P


JayEff - Sa 17.07.04 20:49

Sagtmal... wie leite ich eigentlich die Form vom XStyleFrom ab??
Ich erhalte den Fehler: "Das Fromular muss von TXStyleForm abgeleitet sein". Wahrscheinlich ist das so ne anfängerfrage.... äh.. könnt ihr mir mal eben helfen?


StefanH - Sa 17.07.04 20:51
Titel: Re: TXStyleForm - Formular mit Skin
obbschtkuche hat folgendes geschrieben:


Delphi-Quelltext
1:
2:
3:
4:
5:
uses
  Windows, ..., StdCtrls, xstyleform;

type
  TForm1 = class(TXStyleForm)


so. :)


JayEff - Sa 17.07.04 21:12

OH MAN tut mir so leid! Ich wollt meinen Beitrag grade Editen(etwa 30sekunden nachdem ich ihn erstellt hab) da ist mein PC abgestürtzt. warum auch immer. und gelcihe danach beim glaichen versuch nochmal... Ich habs dann selba raus gefunden. ich werd mal a bissl damit rumexperimentieren...^^ gefällt mir bisher! wenn das alles kann was ich mir so vorstelle, dann wärs echt hammer...

[edit] äh... Ich hab grad gelesen dass du erstmal ne weile nciht mehr progen willst, obbschtkuche. Ich war schockiert! du hast n paar verdammt geile sachen gemacht!(ich hab paarmal einen "downloadbummel" durchopen source und freeware gemacht und bin immerwieder auf deine sachen gestoßen^^ Nur gut, dass ich DAS hier gelesen hab, bevor ich an Selbstmord gedacht hab^^
Zitat:

Ich hab aber auch gerade mein Delphi wiedermal angeschmissen

Ein Glück! :D


Scorpion#666 - Mo 09.08.04 07:06

Hammergeiles Prog.
Hab ich schon immer gesucht.
Scorpion


JayEff - Fr 10.09.04 21:19

Wär es nicht eher einfach noch eine art hintergrund bild zu machen? ich hab letztens rausgefunden wie man es mit ner image macht(hab mir mal die eigenschaften, die ich nicht kannte, angeguckt.aber immerhin: ich musste nachdenken! und ist es nicht der sinn eines jeden Programms, dem User das nachdenken zu ersparen? wieauchimmer...). ausserdem fänd ich es sehr angebracht, den pfad anzuzeigen, ich meine, wenn man ein bild für z.B. den beenden Button ausgesucht hat, dass der Pfad dieses bildes dann acuh dort steht. den sonst muss man eventuelle veränderungen immer nachprüfen. wenn ich z.B. eine Bitmap geladen hab, und dann ein Skin lade, dann weis ich erst wenn ich das programm starte, ob der skin meine alte bitmap überschrieben hat. nur so als beispiel. das wär ne änderung, die ich sehr angebracht fände. aber hey: geniale kompo!


Anonymous - Do 23.09.04 17:10

Die Quelltexte hiervon dürfen ab sofort beliebig verwendet, verändert und neuveröffentlicht werden, solange ich als Originalautor (entweder im Quelltext/AboutBox oder in einem Textdokument) erwähnt werde.


adler - Fr 01.10.04 23:23

Sers, kann mir mal einer bitte nen Screeni von dieser Komponente zeigen?
bzw. von einem ganzen prog, das diese nutzt. Wäre mir lieber, ThX!


raziel - Sa 02.10.04 10:58

Ähhh... ja: http://home.arcor.de/obbschtkuche/screens/XStyleForm.png
Siehe dazu auch: http://www.delphi-forum.de/viewtopic.php?t=25336 (ganz unten des Posts...)


AXMD - Sa 09.10.04 23:29

Hi,

XStyle ist genial, zwei Fragen hätte ich allerdings:

1.) Wie kann ich deine beigelegten Skins laden/einbinden,...
2.) Wie kann ich eigene Skins erstellen?

AXMD


adler - Sa 09.10.04 23:33

Wie du hast es noch nichtmal benutzt.
bzw. neue erstellt und behauptest es sei Genial? ;)


AXMD - Sa 09.10.04 23:39

Mit genial meine ich, dass das Beispielprojekt, das dabei ist, nach dem Kompilieren sofort ein wunderschönes Fenster in einem netten Stil anzeigt, das wunderbar funktioniert (zB keine Access Violation, wenn man es schließt o.ä. ;) ).

AXMD


GTA-Place - So 10.10.04 08:32

Geht ganz einfach:

    1. Klick die Komponente an.
    2. Im Object-Inspector steht: "OpenFile: Bitte wählen sie einen Dateinamen"
    3. Da rein klicken und Text löschen.
    4. Vollständigen Pfad zur *.dat eintragen (z.B. C:\osx.dat).
    5. Enter drücken.
    6. Fertig!


Gibts ein Prog, mit dem man eigene *.dat machen kann?

EDIT: Achja, die kann man mit der Komponente machen!


dagegen - Mo 11.10.04 14:31
Titel: Ich versteh's nicht
Hallo Leute,
ich wollte das Projekt auch mal ausprobieren und hab mir das ZIP runtergeladen.
Wenn ich Project1.dpr mit Delphi7 nun öffne, kriege ich folgende Meldungen:
"Ressourcen Datei ... kann nicht gefunden werden. Neu erzeugt."
Dann: "Klasse TXStyleControl nicht gefunden." Man muss dann "Ignorieren" klicken.
Dann sehe ich die Form mit 4 Buttons.
Beim Kompilieren mit F9 fragt er dann: "Feld Form1.XStyleControl besitzt keine entsprechende Komponente. Soll die Deklaration entfernt werden?" Ich sage Nein.
Dann kriege ich ein komplett weißes Fenster kompiliert und sehe sonst gar nichts.

Was mache ich falsch?


raziel - Mo 11.10.04 14:34

Du musst iirc die Komponente TXStyleControl erst installieren, bevor Du das verwenden kannst!


dagegen - Do 14.10.04 13:54

Und wo kriege ich das her und wie installiere ich es?


raziel - Do 14.10.04 13:59

dagegen hat folgendes geschrieben:
Und wo kriege ich das her und wie installiere ich es?

In dem Archiv ist ne DPK-Datei. Die öffnest du, klickst auf installieren und dann müsst ne meldung kommen "...Komponente...TXStyleContainer...erfolgreich registriert...".


dagegen - Fr 15.10.04 14:57

Danke für eure Geduld! Jetzt hat's der letzte auch kapiert!
Es funzt und sieht gut aus!!!


BlackSeven - Di 19.10.04 23:29

nicht schlecht!
kann ich gut für mein fernsteuerungstool gebrauchen, um es optisch aufzumotzen...


thx


Kroni - So 13.02.05 19:34

Hallo,
ich habe ein Problem mit der Komponente!
Ich habe sie instlaliert.
Wenn ich dann die Beispieldatei lade, öffent sich das Form ohne Probleme nach dem Compilieren.
Wenn ich danmn allerdings ein neues Projekt erstelle, die Komponente auf die Form "pflanze", und dann
TForm1 = class(TXStyleControl)
eingebe, und dann noch eine korrekte *.dat datei lade, und dann das Projekt compiliere, beendet es sich direkt wieder, bzw. lässt sich erst gar nicht öffenen.
Eine Fehlermeldung gibt es auch nicht,
Weiß jemand von euch, woran das leigt??
Ich benutze dafür Delphi 7 PE!

EDIT: Ok ich habs, es muss nicht TXStyleControl sonder TXStyleForm heißen^^


F34r0fTh3D4rk - So 10.04.05 16:22

wow habs grad ausprobiert, ist ja der hammer schlechthin ^^

hab nur mal ne frage (vielleicht schon beantwortet hab net alles gelesen):

wie erstellt man ein eigenes design ? (als dat datei)

wie wäre es, wenn der client bereich auch noch designbar wäre ?


StefanH - So 10.04.05 19:55

user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
wie erstellt man ein eigenes design ? (als dat datei)


alles einstellen, und dann bei FileName (oder sowas) einen Pfad eingeben, enter drücken, fedsch ;)


Lazarus - Sa 25.06.05 01:27

Ist dieses Projekt gestorben ???? Oder wird es irgendwo weitergeführt ???
Schade, ist ein Supiteil soweit...

Ist ja "Opensource" wäre doch schade , wenn es nu verstaubt ...


StefanH - Sa 25.06.05 10:44

user profile iconobbschtkuche hat folgendes geschrieben:
Die Quelltexte hiervon dürfen ab sofort beliebig verwendet, verändert und neuveröffentlicht werden, solange ich als Originalautor (entweder im Quelltext/AboutBox oder in einem Textdokument) erwähnt werde.


@Lazarus: du darfst es wiederführen, wenn du willst... obbschi scheint aber nichts mehr dran machen zu wollen ;)


Gothicware - Mo 19.09.05 22:03
Titel: AlphaBlend eingebaut
Hey Leute,

Super Mega Geniale Unit. Da hab ich mir gedacht, warum geht das mit dem AlphaBlend nicht.
Also mal schnell die Unit überflogen und festgestellt, das ich nicht die Form ansprechen muss, sondern TXStyleForm.container.
Ausserdem noch für Delphi 4 geändert.
(die .dfm's müssen mit Dlphi4\bin\convert.exe vorher convertiert werden)


Hier die Änderungen:

Delphi-Quelltext
1:
2:
uses Controls, Classes, Forms, Messages, Windows,
     Graphics, SysUtils, Dialogs, StdCtrls; //Types gelöscht


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  TXStyleForm = class(TForm)
  private
   container: TXStyleContainer;
   fAlign: TAlign;
   fBorderStyle: TFormBorderStyle;
   fConstraints: TXSizeConstraints;
   fFormStyle: TFormStyle;
   fWindowState: TWindowState;
   fAlphaBlend: Integer; // by Gothicware, Inc.


Delphi-Quelltext
1:
2:
3:
4:
   procedure SetWindowState(const Value: TWindowState);
   procedure SetAlphaBlend(const Value: Integer); // by Gothicware, Inc.
  protected
   procedure SetAutoSize(Value: Boolean); virtual// by Gothicware, Inc.


Delphi-Quelltext
1:
2:
3:
4:
5:
  published
   // Inkompatibel, BoolDoNothing tut nichts
   // (Für >=D6)
   property AlphaBlend: Integer read fAlphaBlend write SetAlphaBlend;  // edit by Gothicware, Inc.
   property TransparentColor: boolean write BoolDoNothing;


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:
//------------[add/edit by Gothicware, Inc.]-------------->
//--> based on a routine by Kladov Vladimir form KOL Units
procedure TXStyleForm.SetAlphaBlend(const Value: Integer);
const
  LWA_COLORKEY=$00000001;
  LWA_ALPHA=$00000002;
  ULW_COLORKEY=$00000001;
  ULW_ALPHA=$00000002;
  ULW_OPAQUE=$00000004;
  WS_EX_LAYERED=$00080000;
type
  TSetLayeredWindowAttributes=
    function( hwnd: Integer; crKey: TColor; bAlpha: Byte; dwFlags: DWORD )
    : Boolean; stdcall;
var
  SetLayeredWindowAttributes: TSetLayeredWindowAttributes;
  User32: THandle;
  dw: DWORD;
begin
//  if Value = fAlphaBlend then Exit;
  fAlphaBlend := Value;
  User32 := GetModuleHandle( 'User32' );
  SetLayeredWindowAttributes := GetProcAddress( User32,'SetLayeredWindowAttributes' );
  if Assigned( SetLayeredWindowAttributes ) then
  begin
    dw := GetWindowLong( self.container.Handle , GWL_EXSTYLE );
    if Byte( Value ) < 256 then
    begin
      SetWindowLong( self.container.Handle, GWL_EXSTYLE, dw or WS_EX_LAYERED );
      SetLayeredWindowAttributes( self.container.Handle, 0, Value and $FF, LWA_ALPHA);
    end;
  end;
end;
//--------------------------------------------->


Einfach Testen, in dem man ein TScrollBar auf die Form plaziert und bei OnChange folgendes Tippt:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
Form1.AlphaBlend:= Scrollbar1.Position;
Caption:= IntToStr(Form1.AlphaBlend);
end;


Hoffe es funktioniert bei euch auch so gut. Also dann viel Spass damit.

Gruss Gothicware.

Ps.: Um TransparentColor werde ich mich auch noch kümmern.


Gothicware - Di 20.09.05 03:04

So, jetzt hab ich auch noch TransparentColor:TColor und Transparent:Boolean eingebaut.
Ist jetzt nur eine Basic Version. Werde in denn nächsten Tagen dran setzen und es richtig einbinden.
Zur Zeit muss man warten bis der Skin fertig gezeichnet wurde, also bei OnCreate klappt das also noch nicht. Desweiteren ist die Routine absolute nicht Optimiert sondern sucht
das komplette Canvas nach vorkommen von TransparentColor ab und bildet dann aus dem ganzen eine Fenster Region. Das ganze da wo der Skinbereich ist, den nach meiner Auffassung ist das auch der Grundgedanke gewessen.

Also Angenommen euer Skin hat Abgerundete Ecken, und der Bereich der Transparent sein soll ist mit rgb(255,0,255) gefüllt, dann ruft folgendes auf:

Delphi-Quelltext
1:
2:
Form1.TransparentColor := rgb(255,0,255);
Form1.Transparent:= True;


Gruss Gothicware, Inc.


150gozilla - Fr 23.09.05 10:13

leider funktioniert das nicht bei D5


jaenicke - Do 16.02.06 14:20

Sooo, ich hab jetzt mal einen Styleeditor angefangen.
Die Basics gehen schon mal. Liegt inklusive Source im Anhang und steht unter der LGPL.

Ich werd das noch als Komponente machen, damit man zur Laufzeit den aktuellen Skin anpassen kann, und auch an dem Control an sich werde ich noch ein paar Sachen verändern. (Natürlich an der von Gothicware veränderten Version)

@Gothicware: Falls du mittlerweile was geändert hast, wärs schön, wenn du das postest, damit ich damit weiterarbeiten kann...

Was ich noch im Auge habe:
1. Manchmal lässt sich das Fenster in der Größe trotz sizeable nicht oder nur in einer Richtung verändern.
2. Die Anchors von Komponenten auf dem Formular funktionieren nicht wie sie sollen. (Die Komponenten verschwinden nach rechts vom Fenster)
3. Die Transparenz soll schneller werden und fürs ganze Fenster gelten.
4. Ich baue noch einen Property-Editor für den Dateinamen (fürs Laden und Speichern im OI) ein.
5. Die einzelnen Teile kommen in einzelne Dateien, damit die Bearbeitung einfacher wird.
6. Das Laden und Speichern baue ich etwas um.

Bis auf die Transparenz werde ich wohl Anfang bis Mitte März fertig sein. Die geht zwar schon fürs ganze Fenster einigermaßen, ist aber viel zu lahm. Aber das krieg ich noch hin, nur nicht so schnell.

@150gozilla: Mit Delphi 5, mal sehen. WAS geht denn nicht? Würde ich gerne auch hinbekommen, nur hab ich Delphi 5 nicht...


GTA-Place - Do 16.02.06 14:39

Sehr schön. Auf den ersten Blick, gefällt mir der Editor.


jaenicke - Mi 05.04.06 15:40

So, mal ne Statusmeldung:
Jetzt kann man auch per Doppelklick auf die Titelleiste maximieren / wiederherstellen.
Die neue Komponente ist auch bald fertig.

Was ich gerade versuche (deshalb hat es so lange gedauert, ich hatte ja ursprünglich schon vor zwei Wochen fertig sein wollen): Das ganze soll zur Laufzeit aktivierbar und deaktivierbar sein. Leider hat das noch einige Macken.
Ich bin aber zuversichtlich das bald fertig zu haben. Leider bin ich im Moment krank und kann deshalb nicht viel machen. Aber ich schätze mal in 1 - 2 Wochen ist zumindest eine neue Version fertig. (Ob die Aktivierbarkeit dann schon drin ist, mal sehen...)


sonic159 - Fr 21.04.06 06:54

Wo bekommt man diesen Komponenten her???

MfG: Sonic159


GTA-Place - Fr 21.04.06 06:55

Auf Seite 1 dieses Thread ist ein Link und auf dieser Seite gibt es die modifizierte Version.


sonic159 - Fr 21.04.06 07:04

Wo steht denn der link um die komponenten zudownloaden?? Es ist noch so früh kann ihn nicht finden!


Alpha_Wolf - Fr 21.04.06 08:02
Titel: Re: TXStyleForm - Formular mit Skin
user profile iconobbschtkuche hat folgendes geschrieben:

Download: http://home.arcor.de/obbschtkuche/down/xstyleform.zip inkl. 3 Skins und Beispielprogramm (Package für D6)


Guten morgen ;)


moddin - Sa 27.05.06 02:01

???? ich versteh das nicht

Ja gut das mit den Skins ist schon krass aber irgendwie ist das komisch

mit SaveFile kann ich nur genauso wie Openfile skins öffnen, meine eigenen Bitmaps werden nicht akzeptiert und
der editor tut nicht wenn man zb "Bitmap für Minimieren" klickt


Philipp_Reitter - Sa 27.05.06 12:23

hi

ich benutze die TXStyleControl componente und finde sie echt supa!!!!
genau das is es was ich für mein projekt brauchte und auch zu programmieren versuchte nur bei mir haute es nie hin...

ja jetzt zu meiner frage:

ich hab versuch das zu machen aber ich hab mcih da nicht ausgekannt und zwar wenn ich auf closebutton drüke dann minimiert er sich zu einem tray... kann mir jemand irgendwie helfen???


moddin - Sa 27.05.06 16:44

der editor ist schrott der tut einfach nichts wenn man bilder laden will und compilieren geht schon gar nicht

?? Die zusrtändigen buttons haben überhaupt keine fukntion im quellcode ?!


jaenicke - Mo 29.05.06 13:12

user profile iconmoddin hat folgendes geschrieben:
der editor ist schrott der tut einfach nichts wenn man bilder laden will und compilieren geht schon gar nicht

?? Die zusrtändigen buttons haben überhaupt keine fukntion im quellcode ?!

Ich weiß, es ging erstmal ums Design. Dann hatte ich aber soviel zu tun, dass ich nicht dazu gekommen bin, den fertig zu schreiben, tut mir leid...
Jedenfalls habe ich das Ganze jetzt etwas weitergemacht.
Es gibt noch ein Problem mit der neuen Version (siehe unten), aber wenn der Fehler nicht relativ schnell behoben werden kann, dann stelle ich das Paket noch einmal mit einer älteren, aber funktionstüchigen Version zusammen.

Es gibt jetzt eine Homepage für die modifizierte Version von mir:
http://www.buchmanager-berlin.de/projects/xstyle/index.html

Aber ich habe ein großes Problem! Es funktioniert nicht mehr. Ich weiß nicht genau, was ich vorher geändert hatte...
Auf jeden Fall kommt jetzt, wenn der TXStyleContainer erstellt werden soll, die Exception EResNotFound mit der Meldung, dass die Resource TXStyleContainer nicht gefunden werden konnte.
Ich weiß nicht warum...
Kann da vielleicht jemand helfen?
Das komplette Projekt gibts hier zum Direkt-Download:
http://www.buchmanager-berlin.de/projects/download/xstyle/XStyleForm_reloaded_1.0_alpha.zip


hw24 - Fr 30.06.06 17:59
Titel: Re: TXStyleForm - Formular mit Skin
Sieht ja ganz nett aus. :)

Kann man da irgendwie auch noch ein funktionierendes Systemmenü einbauen ?

Das hier meine ich:
user defined image


F34r0fTh3D4rk - Sa 01.07.06 08:27

gibt es einen weg, die dat dateien zu dekompilieren, um sich die bilder mal anzugucken ?


Gothicware - So 02.07.06 04:45

Ja gibt es!
Man nehme den Quellcode, nehme daraus die Funktion die wiederum die Bilder aus der *.dat (Orginal *.xstyles) extrahiert bevor diese gezeichnet werden.

Ansonsten hilft immer ein guter Hex-Editor und etwas Wissen über verschiedene Datei Formate.

*grins*


Fighter#1 - Do 06.07.06 19:15

Also, sorry.
Ich schein irgendwie zu blöd!
Also ich Compilier und Installier die Komponente, OK.
Ich zieh sie bei mir aufs Form, OK.
Ich ändere die Klasse von TForm1 wie folgt:
type
TForm1 = class(TXStyleForm)

Ich ändere die OpenFile Proberty von der XStyleControl1 mit dem Dateinamen.
Und wenn ich das Projekt Kompilier siehts so aus:

user defined image

Das ist doch hoffentlich nich normal das da das halbe Formular
was hab ich falsch gemacht??


Gothicware - Sa 08.07.06 09:08

Frage wäre jetzt wo der Fehler liegt. Hilfreich wäre es wenn du dir einen Skin erstellst wo jedes Element eine andere Farbe hat, und die Hintergrund Farbe des Formulars auch. Dann siehst du auch ob zb.: nur ein Element Falsch gezeichnet wird und die anderen überlagert, oder ab die Elemente nur zum Teil gezeichnet werden.

Also bei mir hat die Unit bis auf wenige Einschränkungen funktioniert (Delphi 4 Server/Client).

Gruss GW


Fighter#1 - Sa 08.07.06 11:42

Puh!
Also, das Problem ist gewesen:
Form1.CanResize --> Resize:=False;

Das darf nicht sein!


robo202 - Mo 13.10.08 19:41

halloich weiß das ist ne sau dumme frage wie ich auch ;) also ich hab da mein formular aus der VLC formular anwendung son einfacher player den ich mal geprogt hatte so dan hab ik mir den orgner heruntergeladen mit :
-Project1.dpr
-styleform.dpk
-unit1.dfm
-unit1.pas
-xstyleform.dfm
-xstyleform.pas
-styles :
-osx.dat
-win2k.dat
-extremexp.dat

so wie und was lege ich jetzt auf das formular bitte nur klare antworten oder gute links

danke euch schon mal ihr super brains ;)


MDX - Mo 13.10.08 20:09

die styleform.dpk installieren und dann einfach auf form ziehen wie label oder button


jaenicke - Mo 13.10.08 22:29

Und oben bei class(TForm) musste glaube ich class(TXStyleForm) oder so hin, aber da müsste ich jetzt schauen wie das genau war.


robo202 - Di 14.10.08 17:51
Titel: HOST-ANWENDUNG ?
OK danke das waren super tips glaube es klapt aber (also ich hab Delphi 2005) nagut ich öfnete diese dpk datei machte rechtsklick (comperliren) und rechtsklick (instalieren) so dan hab ik eine neue VCL formulaganwendug auf gemacht und dann hinten das ganze im Quelltext geändert und dieses TXstylecontrol aus der Toolplatte auf die Form gesetzt
mein Code sah so aus


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:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Xstyleform;

type
  TForm1 = class(TxstyleForm)
    XStyleControl1: ]TXStyleControl;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



end.

wenn ich dan straten wollte sagte der


Delphi-Quelltext
1:
[Fataler Fehler] Unit1.pas(7): F1026 Datei nicht gefunden: 'Xstyleform.dcu'                    


so

dann hab ich nochmal die dpk datei wie oben beschrieben instliert so alles OK dachte ich kam auch kein fehler mehr nur ne meldung

"Ohne angabe einer HOST-ANWENDUNG kann das projekt nicht ausgeführt werden."


WAS MACHE ICH FALSCH ?

Danke für eure kommende HILFE


jaenicke - Di 14.10.08 18:16

Du machst falsch, dass das Package noch dein aktuelles Projekt ist ;-).
Die Fehlermeldung besagt, dass du eine DLL (hier eine Package-DLL) erstellt hast und versuchst auszuführen. Das geht aber nicht ohne eine Exe (die Hostanwendung) in die sie eingebunden wird.


robo202 - Di 14.10.08 20:28

achso OK danke jetzt wird es mir bald peinlich aber ich muss nochmal fragen :lol: :bawling: aber wie kann ich diesen fehler jetzt beheben wenn ihr findet das diese frage blöd ist einfach nichtposten :)


jaenicke - Di 14.10.08 20:48

Es gibt keine dummen Fragen, nur dumme Antworten. ;-)

Wenn du eine Projektgruppe offen hast (das hast du ab D2005 immer), und dann gleichzeitig eine Anwendung und ein Package offen hast, dann kannst du eines davon gerade kompilieren, das ist in der Projektverwaltung das fettgedruckte. Und aktiv ist bei dir vermutlich das Package. (Ändern kannst du das durch Doppelklick auf das entsprechende Projekt)

Schließe einfach alles und öffne nur das Projekt deiner Anwendung in Delphi, dann sollte das klappen.


schrott1 - So 25.01.09 05:41
Titel: style designer?
es gab ja mal eine halb fertige version von nem style editor
ist die schon weiterentwickelt worden?
wenn ja wo kann ich sie downloaden?
wenn nein waehre es ganz nett wenn iwer mal n tut machn koennte wie ich mir mein own design machn kann.

thx schon ma im voraus

mfg
schrott1


jaenicke - Sa 07.02.09 17:04

:welcome: im Forum!

Nein, ich habe da nicht weiter dran gearbeitet. Aber ich habs mir mal auf die ToDo-Liste geschrieben, mal schauen wann ich dazu komme. ;-)

Du könntest ja auch selbst daran etwas ändern, wenn du möchtest, die Quelltexte sind ja alle verfügbar.


jaenicke - Di 24.02.09 11:38

So, ich habe mich einmal kurz wieder an das Projekt gesetzt. Jetzt funktioniert es soweit, der Quelltext ist jetzt in mehrere Dateien aufgeteilt und insgesamt überarbeitet.

Um auch Aktualisierungen etc. direkt im ersten Post ankündigen zu können, habe ich mit der erneuerten Version einen neuen Thread erstellt:
http://www.delphi-forum.de/viewtopic.php?p=551018
Ich bitte darum, Antworten zur neuen Version nur noch dort zu posten.