Autor Beitrag
Michi89
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 20.09.08 19:00 
Hallo wie kann ich, dem was ich Programmiert habe eine Grafische Oberfläche bieten?
(Wenn möglich ohne die grund Programmierung zu änderen)
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Sa 20.09.08 19:42 
Hast du denn eine Formularanwendung programmiert oder eine Konsolenanwendung?

Gruß
--

_________________
Hallo Mutti
Michi89 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 20.09.08 19:45 
Ganz normale Anwendung...
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Sa 20.09.08 19:52 
Dann hast du doch schon eine grafische Oberfläche. Was du meinst sind wahrscheinlich Suche in: Delphi-Forum SKINS...

Gruß
--

_________________
Hallo Mutti
Michi89 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 20.09.08 19:53 
Unter einer Grafischen Benutzerfläsche meint man nicht das Standtart Grafische...^^

Aber danke für den link..
hoffe ich finde was ich suche... xD
Webo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 577
Erhaltene Danke: 14

Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
BeitragVerfasst: Sa 20.09.08 20:29 
Die Standard Oberfläche ist aber definitiv auch eine grafische Oberfläche, sie sieht eben nur wie Windows aus. Oder willst du behaupten der Standard sei nicht grafisch ? :)

So, hab mal den Link hier ausgegraben : www.delphi-forum.de/...ighlight=txstyleform

Kleiner Tipp: SuFu hilft meistens ...

_________________
Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Sa 20.09.08 22:03 
hier hab ich mal die Unit AdvImage gepostet. Mit der kannst du gucken, wann die Maus über das Image bewegt wird. Wenn du jetzt z.B. beim MouseEnter einen glühenden Knopf und bei MouseLeave einen normalen Knopf lädst, hast du schon einen grafisch aufgepeppten Button.

Beispiel:
Einloggen, um Attachments anzusehen!
_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Gewuerzgurke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 152

Win XP
Lazarus
BeitragVerfasst: So 12.10.08 13:44 
Auch wenn das Thema schon vor einiger Zeit "aufgehört hat, aktuell zu sein", aber ist mit
Zitat:
Hallo wie kann ich, dem was ich Programmiert habe eine Grafische Oberfläche bieten?
(Wenn möglich ohne die grund Programmierung zu änderen)

denn nicht eher gemeint, dass man sich eine DLL oder so macht, die dann im Programm einbindet und schon verändern sich Fensterleiste und Buttons... ?
Im Prinzip so, wie Windows das sowiso schon macht. Das heist, die (Voreinstellung) *:\WINDOWS\Resources\Themes\Luna\Shell\NormalColor\shellstyle.dll, zum Beispiel, bewirkt dieses Standard-XP-Blau, usw.
Was mich nämlich auch interessiert, ist ob das Programm irgendwie die Möglichkeit hat, sich diese "Layout-DLL" selber auszusuchen?! Oder noch besser: Ob man sich so eine DLL selber machen - und diese dann als Vorlage für zahlreiche andere Programme verwenden kann?

Der Windows Mediaplayer 11 scheint dies datsächlich zu machen.

Mir ist es aber nur gelungen, ein Programm zu machen, dass mit Borderstyle = bsNone die XP-Fensterleiste "ausblendet" und dann mit Bildchen und haufenweise Prozeduren eine Eigene simuliert. Der Nachteil dabei ist aber, DASS man die komplette Grundprogrammierung ändern muss.

Hat nicht jemand anderes noch eine Idee?

www.delphi-forum.de/...ighlight=txstyleform Das kommt dem schon sehr nahe, aber wenn ich das richtig verstanden habe, wird dort keine alternatieve "Layout-DLL" an Stelle der Standard-Windows-DLL verwendet - oder?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 12.10.08 13:56 
Layout-DLL? Was meinst du? Da werden die Teile selbst gezeichnet, und dafür sind die Teile des Styles in den Bildern der Styledatei, nur dass das in dem Fall keine DLL ist. Ich hatte da ja mal dran gearbeitet etwas, aber hatte das Projekt dann aus den Augen verloren.
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 12.10.08 14:23 
user profile iconGewuerzgurke hat folgendes geschrieben Zum zitierten Posting springen:
Im Prinzip so, wie Windows das sowiso schon macht. Das heist, die (Voreinstellung) *:\WINDOWS\Resources\Themes\Luna\Shell\NormalColor\shellstyle.dll, zum Beispiel, bewirkt dieses Standard-XP-Blau, usw.
Was mich nämlich auch interessiert, ist ob das Programm irgendwie die Möglichkeit hat, sich diese "Layout-DLL" selber auszusuchen?! Oder noch besser: Ob man sich so eine DLL selber machen - und diese dann als Vorlage für zahlreiche andere Programme verwenden kann?

Wenn du die Unit XPMan (oder bis Delphi7 das antsprechende Manifest) einbindest, passt sich dein Programm automatisch den gegebenheiten des Systemlayouts an. Du kannst aber nicht sagen, dass dein Proggi Luna-Blau verwenden soll, während das restliche System Luna-Silber verwendet. Das entspricht nicht der Idee, die hinter den Win-Themes steckt.


user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Layout-DLL?

Er meint DLLs, in denen die Zeichenroutinen liegen und man das Theme eben durch auswechseln der DLL erreicht.
Gewuerzgurke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 152

Win XP
Lazarus
BeitragVerfasst: So 12.10.08 15:57 
Also, was ich wissen wollte ist, ob dieses Beispielprogramm wirklich einen eigenen Fensterrand erzäugt oder auch nur die Original-Rahmen von XP ausblendet und dann eine eigene Fensterleiste simuliert. Meines Erachtens giebt es da einen kleinen Unterschied, den ich selber aber nicht nachprüfen kann, weil ich dieses Programm bei mir nicht compilieren kann.

Wenn man ein Programm maximiert und dann minimiert, sieht man ja, dass das Fenster nicht gleich verschwindet, sondern noch kurz unverändert bleibt und sich statt dessen erst ein schwarzer Balken, der die Umrisse der Fensterleiste nachbildet, richtung Taskleiste verkleinert.
Nur wenn man mein Programm, das ich mal angefertigt habe, maximiert und dann minimiert, dann ist das Fenster sofort verschwunden und es verkleinert sich nur ein kurzer Balken von der Bildschirmmitte aus. Ich nehme mal an, das kommt daher, dass ich Borderstyle = bsNone verwende.

Mich interessiert jetzt eben, ob das bei diesem Beispielprogramm auch so ist, oder ob da, wie auch beim Mediaplayer 11 alles funktioniert. Denn eigentlich wollte ich mal wieder an meinem eigenen Programm herumbasteln aber bevor ich mir da jetzt umständlich Mühe gebe, möchte ich noch wissen, ob dieses merkwürdige "Verkleinerungsverhalten" bei mir nur an Borderstyle = bsNone liegt oder ob es zu den "echten" Programmleisten noch einen entscheidenden Unterschied giebt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 12.10.08 16:15 
Wenn du den Mediaplayer 11 dazu bringst abzustürzen bzw. festzuhängen, dann siehst du, dass der den eigenen Rahmen über den anderen zeichnet, deshalb siehst du bei einem Absturz den neuen Rahmen an dieser Stelle.

XStyleForm basiert auf einem zweiten Formular, dass hinter das eigentliche Formular geschoben wird und dann die Rahmendarstellung übernimmt.
Gewuerzgurke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 152

Win XP
Lazarus
BeitragVerfasst: So 12.10.08 17:45 
Heist das also, dass auch der Mediaplayer den Originalrahmen nur übermahlt? Aber wie funktioniert das eigentlich? Nur, indem man ein zweites Anzeigefenster darüber schiebt oder giebt es noch eine andere Möglichkeit, Pixel außerhalb des eigenen Anzeigefensters zu färben? Ich hab mal ein Programm entdeckt, das weiße Pixel wie Schneeflocken über den Bildschirm rieseln lässt. Das können doch nicht alles seperate Anzeigefenster sein!?
files.filefront.com/...08811;/fileinfo.html
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: So 12.10.08 17:54 
Aber sicher kann man außerhalb des eigenen Fensters zeichnen. Schau dir mal das hier an:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  Desktop: THandle;
  DC: HDC;
begin
  Desktop:=GetDesktopWindow;
  DC:=GetWindowDC(GetDesktopWindow);
  Rectangle(DC, 00300300);
end;

(ungetestet; hab ich noch irgendwo rumliegen gehabt; stammt nicht von mir)

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 12.10.08 17:54 
Hallo,

die übermalen den Rahmen nicht, sondern schalten diesen ab und zeichnen auf dem eigentlichen Form einen neuen. Also den Rahmen auf bsNone und dann oben rechts drei Buttons hingeklatscht ;).

@schneeflocken: nein. Das zeichnet einfach direkt auf den Desktop. Also die Arbeitsfläche ist dort nicht ein eigenes Formular, sondern das Formular eines fremden Programmes ;).
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 12.10.08 18:14 
user profile iconHeiko hat folgendes geschrieben Zum zitierten Posting springen:
die übermalen den Rahmen nicht, sondern schalten diesen ab und zeichnen auf dem eigentlichen Form einen neuen. Also den Rahmen auf bsNone und dann oben rechts drei Buttons hingeklatscht ;).
Dann würde im MediaPlayer das selbe "Phänomen" auftreten wie bei allen anderen Programmen, bei einem Absturz würde die windowseigene Leiste darüber erscheinen. Das tut sie aber nicht, die Leiste wird nicht einfach auf das eigene Formular gezeichnet.
Beim WMP wird das definitiv anders gemacht. (Wie hab ich bisher nicht näher geschaut.)
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 12.10.08 18:16 
Sicher? Glaube ich eher nicht. Wenn der WMP11 abstürzt erscheint die Leiste oben. Das ist korrekt. Da er aber abgestürzt ist, kann er ja schlecht darauf reagieren dass er jetzt wneiger Platz hat. Von daher erscheint es so, dass er darüber zeichnet ;).
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 12.10.08 18:20 
Wenn ich aber bei mir die Titelleiste mit bsNone ausblende erscheint die Orginalleiste bei einem Absturz oberhalb, das passiert auch beim Live Messenger zum Beispiel. Nur beim WMP erscheint diese an der selben Stelle wie die simulierte. Das ist dort ganz sicher anders. Ich weiß nur gerade nicht wie es da funktioniert.

Dafür müsste ich wieder nen Absturz provozieren und vergleichen was anders ist ;-).
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 12.10.08 18:29 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich aber bei mir die Titelleiste mit bsNone ausblende erscheint die Orginalleiste bei einem Absturz oberhalb, das passiert auch beim Live Messenger zum Beispiel. Nur beim WMP erscheint diese an der selben Stelle wie die simulierte. Das ist dort ganz sicher anders. Ich weiß nur gerade nicht wie es da funktioniert.

Ok - ich bin gerade von der maximierten Variante ausgegangen (was er bei mir immer ist). Da fallen einem keine Unterschiede auf.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Dafür müsste ich wieder nen Absturz provozieren und vergleichen was anders ist ;-).

Das sollte nicht so schwer sein. Wenn er seine Phase hat bekommt man den ja nur gestartet, in dem man eine mp3 direkt startet ;).
Gewuerzgurke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 152

Win XP
Lazarus
BeitragVerfasst: So 12.10.08 18:44 
Was man aber beachten sollte, ist, dass der WMP zum größten Teil auf C++ aufbaut, möglicher Weise giebt es da noch andere Warianten die Programmleiste auszublenden. Oder der kann wirklich eine eigene DLL laden. Bei Microsoft weis man ja nie...