Allgemeine Fragen zu VB/Programmieren/Steuerelemen

Hallo,
ich hoffe man schlägt mich jetzt nicht, aber ich habe mal ein paar allgemeine Fragen, die man eigentlich stellen sollte bevor man mit dem Programmieren/einem Projekt anfängt. Ich fang mal an auf der Suche nach goldenen Regeln:

  1. Welche Möglichkeiten gibt es, den Programmcode bei VB6 übersichtlich zu gestalten? Ich versuche immer Spaghetti-Code zu vermeiden, den Code in allgemeine Prozeduren aufzuteilen und diese auf Module zu verteilen.
    Gibt es da noch irgendeine „goldene Regel“? Lohnt es sich mal Klassenmodule anzuschauen, ich weiß nämlich nicht wirklich, wozu sie dienen.

  2. Wie kann ich meine Benutzeroberfläche „schön“ und übersichtlich gestalten. Gibt es eine Seite mit Tipps oder so etwas…(ich weiß selbst nicht ganz, was ich hören möchte xD)

2.1) Ich habe einige Pakete mit Daten (z. b. Gesamt: Stunden, Kilometer, Durchschnitt…; siehe Bild: http://home.arcor.de/simpsons-fun/programmoberflaech… ).
Wie kann ich so etwas am übersichtlisten darstellen? Ich habe jetzt ein Frame mit einzelnen Labels und Linien. Das geht doch bestimmt schöner oder? Gibt es eine Seite mit Steuerelementen zum Downloaden, gibt es vielleicht ein Steuerelement, was mir in diesem Fall helfen könnte? Wäre es viel Arbeit zu lernen Steuerelemente zu Programmieren und mir entsprechendes zu machen?

Naja das waren erstmal alle Sorgen, die mir auf der Tastatur liegen. Wäre nett, wenn mir jemand die ein oder andere Frage beantworten könnte…

Gruß, Simon

Hi Simon,

ich hoffe man schlägt mich jetzt nicht,

wir sind hier ein paar ganz Nette, wir schlagen niemanden. :smile: Für Fragen schon gar nicht.

aber ich habe mal ein
paar allgemeine Fragen, die man eigentlich stellen sollte
bevor man mit dem Programmieren/einem Projekt anfängt.

Nein, ich habe auch einfach angefangen und suche eigentlich immer noch.

Ich fang mal an auf der Suche nach goldenen Regeln:

  1. Welche Möglichkeiten gibt es, den Programmcode bei VB6
    übersichtlich zu gestalten?

kein Goto verwenden, Prozeduren schreiben und den Code dahin, wo er hin gehört.

Ich versuche immer Spaghetti-Code
zu vermeiden, den Code in allgemeine Prozeduren aufzuteilen
und diese auf Module zu verteilen.

Module sind für wiederverwendbaren Code und für Prozeduren, die von verschiedenen Formen aus angesprochen werden. Was nur von einer Form aus aufgerufen wird und in anderen Projekten nicht verwendbar ist, gehört eher nicht in ein Modul. Ich habe z.B. ein Modul für FTP, eins für Telnet, eins zum drucken von Barcode … jeweils so, daß ich das jederzeit in einem neuen Projekt verwenden kann.

Gibt es da noch irgendeine „goldene Regel“? Lohnt es sich mal
Klassenmodule anzuschauen, ich weiß nämlich nicht wirklich,
wozu sie dienen.

Ja, natürlich lohnen sich Klassenmodule. Von Klassen kannst Du mehrere Instanzen erzeugen. Damit kannst Du die selbe Funktion mehrfach aufrufen und die Variablen in der Funktion können in jeder Instanz einen Wert annehmen, der den Wert in einer anderen Instanz nicht beeinflusst. Das geht nur mit Klassen. Aus Klassen kannst Du Events feuern was besonders dann interessant wird, wenn das Event durch äußere Ereignisse ausgelöst wird.

  1. Wie kann ich meine Benutzeroberfläche „schön“ und
    übersichtlich gestalten. Gibt es eine Seite mit Tipps oder so
    etwas…(ich weiß selbst nicht ganz, was ich hören möchte xD)

Das ist Geschmackssache.

2.1) Ich habe einige Pakete mit Daten (z. b. Gesamt: Stunden,
Kilometer, Durchschnitt…; siehe Bild:
http://home.arcor.de/simpsons-fun/programmoberflaech… ).

Das sieht doch hübsch aus? Da hebe ich keine anderen Vorschläge.

Wie kann ich so etwas am übersichtlisten darstellen? Ich habe
jetzt ein Frame mit einzelnen Labels und Linien. Das geht doch
bestimmt schöner oder? Gibt es eine Seite mit Steuerelementen
zum Downloaden, gibt es vielleicht ein Steuerelement, was mir
in diesem Fall helfen könnte?

Hmmmm, die sind immer grau in grau, das sieht nicht so aus, als wolltest Du das.

Wäre es viel Arbeit zu lernen
Steuerelemente zu Programmieren und mir entsprechendes zu
machen?

Nicht sehr viel schwerer als ein normales Projekt. Wenn Du erst mal weißt, wie das mit den Eigenschaften funktioniert, ist der Rest simpel.

Gruß, Riner

Hallo,

Hallo :smile:

ich hoffe man schlägt mich jetzt nicht, aber ich habe mal ein
paar allgemeine Fragen, die man eigentlich stellen sollte
bevor man mit dem Programmieren/einem Projekt anfängt.
Ich fang mal an auf der Suche nach goldenen Regeln:

Keine Bange , wir beissen schon nicht :smile:

  1. Welche Möglichkeiten gibt es, den Programmcode bei VB6
    übersichtlich zu gestalten? Ich versuche immer Spaghetti-Code
    zu vermeiden, den Code in allgemeine Prozeduren aufzuteilen
    und diese auf Module zu verteilen.
    Gibt es da noch irgendeine „goldene Regel“? Lohnt es sich mal
    Klassenmodule anzuschauen, ich weiß nämlich nicht wirklich,
    wozu sie dienen.

Das kommt mit der Zeit. Ich würde zum Bsp. wie Rainer schon sagte auf Sprungmarken alla Goto verzichten, ausser bei der Fehlerbehandlung

Ich würde eindeutige Namen für Variablen und Steuerelemente verwenden.
Zum Bsp. Ein Zaehler der den Typ Integer hat, würde ich zum Bsp. folgendermassen declarieren

Dim IntZaehler as Integer

Hast du zum Bsp. Ein Steuerlement Label, was zur Anzeige eines Pfades dient, so würde ich Ihn folgendermassen nennen.

 lblPfad

Auch solltest du Source Codes, den du mehrfach ausführst, in eine Function oder Procedure auslagern.
Brauchst du den Source von mehreren Formen aus, so lagere Sie in ein Modul!

Declariere Variablen als Public, nur wenn es noetig ist.
Versuche soviel wie möglich als Parameterzu uebergeben :smile:

Gerade zum Anfang, verwende immer den ganzen Syntax und nicht die abgekuerzte Form.

Bsp:

Dim Flag as Boolean
Dim I$ 'So lieber nicht!
Dim I as String 'Dann lieber so :smile:

if Flag then ... 'So lieber nicht
If Flag = True then .... 'Lieber so

Nutzt du sehr viele Steuerelemente, so bietet es sich an, Steuerelement Arrays zu verwenden!

Zu dem Thema Klassenmodule:

Klassenmodule sind was sehr schoenes :smile:
Einiges dazu hat dir Rainer ja bereits scgon geschrieben!
Anbei möchte ich noch hinzufügen

Sie können auch als Datenspeicher dienen! ( Collection)
Du kannst sie vererben
Sie koennen ereignisse auslösen etc.

Klassen sind sehr umfangreich und hier alles zu schreiben,
würde den Rahmen sprengen :s

Anbei mal ein paar interesante Links

http://www.vbarchiv.net/faq/allg_klassen.php
http://home.arcor.de/neoinferno/tutvb_klassen.htm
http://www.activevb.de/tutorials/tut_klassen/klassen…
http://www.vbarchiv.net/workshop/workshop53.php

  1. Wie kann ich meine Benutzeroberfläche „schön“ und
    übersichtlich gestalten. Gibt es eine Seite mit Tipps oder so
    etwas…(ich weiß selbst nicht ganz, was ich hören möchte xD)

Gute Frage. Eine Richtlinie dafür gibt es nicht!
Ich würde darauf achten das sich die Steuerelemente automatisch der Grösse anpassen!
Auch solltest du die Formen nicht zu voll packen!
Eine Alternative die ich gerne nehme ist, zu ermitteln ob Themes genutzt werden und diese dann einsetzen.

2.1) Ich habe einige Pakete mit Daten (z. b. Gesamt: Stunden,
Kilometer, Durchschnitt…; siehe Bild:
http://home.arcor.de/simpsons-fun/programmoberflaech… ).
Wie kann ich so etwas am übersichtlisten darstellen? Ich habe
jetzt ein Frame mit einzelnen Labels und Linien. Das geht doch
bestimmt schöner oder? Gibt es eine Seite mit Steuerelementen
zum Downloaden, gibt es vielleicht ein Steuerelement, was mir
in diesem Fall helfen könnte? Wäre es viel Arbeit zu lernen
Steuerelemente zu Programmieren und mir entsprechendes zu
machen?

Ich habe mir die Seite nicht angeschaut. Aber wie waere es wenn du die Daten in ein Flexgrid anzeigst? Dort kannst du auch eine Option einbauen, was der Anwender alles sehen möchte!

Schöner geht es sicherlich. Es ist halt nur die Frage, was es für ein Aufwand ist und je nachdem was man möchte bedarf es auch enormes wissen!

Steuerelemente gibt es zu Hauf zum downloaden, aber ob was richtiges für dich dabei ist, ist fraglich. Da muesstest du schon selbst Google bemuehen und mal schauen :smile:

Ein Steuerelement zu programmieren, ist eigentlich nicht schwer. Es kommt darauf an, was es soll. Je nachdem kommen schon einmal schnell 1000 Zeilen zusammen :s
In der FAQ ist ein Demo, wie man Steuerelemente erstellt.
Ich bin zur Zeit nicht daheim, sonst koennte ich dir mal einen Source posten ( aus einem meiner projece, die ein Frame darstellt, der ein wenig anders ausschaut, als der von VB.
Wenn du Bedarf an dem Source hast, so sage mal bescheid und ich poste ihn dann :smile:

Naja das waren erstmal alle Sorgen, die mir auf der Tastatur
liegen. Wäre nett, wenn mir jemand die ein oder andere Frage
beantworten könnte…

Ich hoffe dir ein wenig geholfen zu haben :smile:

Gruß, Simon

MfG Alex

Hallo Rainer,

ich danke dir vielmals für deine ausführliche Antwort. Waren ja einige Tipps dabei, die ich beherzigen werde!
Zu Klassenmodulen hat mir Alex ja noch einiges geschrieben, da werde ich mich dann irgendwann einmal hereinarbiten und gucken, ob sie Verwendung bei mir finden könnten.

Auf jeden Fall danke,
Gruß, Simon

Hallo Alex,

dir Danke ich auch für deine ausführliche Antwort! Es war einiges dabei, was ich sowieso schon beachtet habe, aber auch einiges neues.

Die Klassenmodule werde ich mir die Tage mal angucken.

Eine Alternative die ich gerne nehme ist, zu ermitteln ob
Themes genutzt werden und diese dann einsetzen.

Mhm danach werde ich mal googeln, das mit den Themes klang schon immer interessant…

Ich habe mir die Seite nicht angeschaut. Aber wie waere es
wenn du die Daten in ein Flexgrid anzeigst? Dort kannst du
auch eine Option einbauen, was der Anwender alles sehen
möchte!

Flexgrids habe ich auch schon im Einsatz bei größeren Tabellen. Aber ich bin nicht auf die Idee gekommen, diese auch mal für die Pakete einzusetzten. Ich gucke mal, ob man das FG entsprechend schön konfigurieren kann.

Steuerelemente gibt es zu Hauf zum downloaden, aber ob was
richtiges für dich dabei ist, ist fraglich. Da muesstest du
schon selbst Google bemuehen und mal schauen :smile:

Ja ich habe schon lange gegoogelt, bevor ich hier gefragt habe, aber nichts gefunden.
Grade such ich z. B. auch eine Leiste, die ähnlich wie die von z. B. Firefox eingestzte Suchleiste ist: Eine Dropdown-Liste, wo man angeben kann, was durchsucht werden soll, und daneben ein Textfeld wo man die Suche eingeben kann. Aber ich finde einfach nichts entsprechendes.

In der FAQ ist ein Demo, wie man Steuerelemente erstellt.
Ich bin zur Zeit nicht daheim, sonst koennte ich dir mal einen
Source posten ( aus einem meiner projece, die ein Frame
darstellt, der ein wenig anders ausschaut, als der von VB.
Wenn du Bedarf an dem Source hast, so sage mal bescheid und
ich poste ihn dann :smile:

Ja ich kenne ja noch deinen Button, der etwas anders war, als der VB eigene und das schreckt mich eigentlich ab. Aber an dem Frame wäre ich trotzdem einmal interessiert!

Vielen Dank,
Gruß, Simon

Hallo Alex,

Hallo Simon,

dir Danke ich auch für deine ausführliche Antwort! Es war
einiges dabei, was ich sowieso schon beachtet habe, aber auch
einiges neues.

Nichts zu danken :smile:

Die Klassenmodule werde ich mir die Tage mal angucken.

OK

Eine Alternative die ich gerne nehme ist, zu ermitteln ob
Themes genutzt werden und diese dann einsetzen.

Mhm danach werde ich mal googeln, das mit den Themes klang
schon immer interessant…

Es hört sich rel. kompliziert an, ist es aber nicht. Schaue Dir mal folgende API’s an

'Theme activieren
Declare Function ActivateWindowTheme Lib "uxtheme" \_
 Alias "SetWindowTheme" ( \_
 ByVal hWnd As Long, \_
 Optional ByVal pszSubAppName As Long = 0, \_
 Optional ByVal pszSubIdList As Long = 0) As Long

'Theme deactivieren
Declare Function DeactivateWindowTheme Lib "uxtheme" \_
 Alias "SetWindowTheme" ( \_ 
 ByVal hWnd As Long, \_ 
 Optional ByRef pszSubAppName As String = " ", \_ 
 Optional ByRef pszSubIdList As String = " ") As Long

'Ist ein Theme installiert und active
Declare Function IsThemeActive Lib "UxTheme.dll" () As Boolean

'Verwendet Anwendung von der die API aufgerufen wird, Themes?
Declare Function IsAppThemed Lib "UxTheme.dll" () As Boolean

'Theme Systemweit ein oder ausschalten
Declare Function EnableTheming Lib "UxTheme.dll" (ByVal b As Boolean) As Long

Flexgrids habe ich auch schon im Einsatz bei größeren
Tabellen. Aber ich bin nicht auf die Idee gekommen, diese auch
mal für die Pakete einzusetzten. Ich gucke mal, ob man das FG
entsprechend schön konfigurieren kann.

Machbar ist alles :smile: Zur Not ein wenig tricksen damit es klappt :smile:

Grade such ich z. B. auch eine Leiste, die ähnlich wie die von
z. B. Firefox eingestzte Suchleiste ist: Eine Dropdown-Liste,
wo man angeben kann, was durchsucht werden soll, und daneben
ein Textfeld wo man die Suche eingeben kann. Aber ich finde
einfach nichts entsprechendes.

Warum mit Kanonen auf Spatzen schiessen?
Das kannst du ganz simple mit VB Bordeigenen Mitteln lösen!

Erstelle mal eine Form. Füge als Komponenten die Common Controls hinzu.Auf der Form setzt du nun die Toolbar ein.
Diese stellst du dein Beduerfnissen an. Willst du dort auch wie bei Firefox, die Symbole haben, so füge auf der Form noch eine Imagelist ein. In dieser dann die Symbole. Die Imagelist bindest du an die Toolbar und erstellst dann dort die Schaltflächen.
Dann nimmst du eine Combobox und ziehst sie in der Toolbar auf! Somit hast du die Combobox wiebei Firefox in der Toolbar. Das selbe machst du mit der Textbox :smile:

Alternativ setzt du die Combobox und die textbox normal auf die Form und schreibst im Form_Load Ereignis folgenden Source

 Set Combo1.Container=Toolbar1
 Combox1.Move x,y,width,height
 Set Tetx1.Container = Toolbar1
 text1.move x,y,width,height

Für x,y,width,height musst du nur die koordniaten angeben, wo sich die Elemente in der Toolbox befinden sollen :smile:

Wie du siehst, eigentlich ganz einfach :smile:

Ja ich kenne ja noch deinen Button, der etwas anders war, als
der VB eigene und das schreckt mich eigentlich ab. Aber an dem
Frame wäre ich trotzdem einmal interessiert!

Das meiste sind nur die Eigenschaften und die Darstellung. Du kannst dir natuerlich auch aus VB Bordeigenen Mitteln ein Steuerelement zusammensetzen und dann compilieren. Dazu musst du dann nicht viel Source schreiben :smile:

Vielen Dank,
Gruß, Simon

MfG Alex

Hallo Alex,

'Theme activieren
Declare Function ActivateWindowTheme Lib „uxtheme“ _
Alias „SetWindowTheme“ ( _
ByVal hWnd As Long, _
Optional ByVal pszSubAppName As Long = 0, _
Optional ByVal pszSubIdList As Long = 0) As Long

'Theme deactivieren
Declare Function DeactivateWindowTheme Lib „uxtheme“ _
Alias „SetWindowTheme“ ( _
ByVal hWnd As Long, _
Optional ByRef pszSubAppName As String = " ", _
Optional ByRef pszSubIdList As String = " ") As Long

'Ist ein Theme installiert und active
Declare Function IsThemeActive Lib „UxTheme.dll“ () As Boolean

'Verwendet Anwendung von der die API aufgerufen wird, Themes?
Declare Function IsAppThemed Lib „UxTheme.dll“ () As Boolean

'Theme Systemweit ein oder ausschalten
Declare Function EnableTheming Lib „UxTheme.dll“ (ByVal b As
Boolean) As Long

Okay das hört sich sehr komliziert an! Leider vestehe ich sehr wenig, aber ich werde das mal Zeile für Zeile „übersetzten“…

Erstelle mal eine Form. Füge als Komponenten die Common
Controls hinzu.Auf der Form setzt du nun die Toolbar ein.
Diese stellst du dein Beduerfnissen an. Willst du dort auch
wie bei Firefox, die Symbole haben, so füge auf der Form noch
eine Imagelist ein. In dieser dann die Symbole. Die Imagelist
bindest du an die Toolbar und erstellst dann dort die
Schaltflächen.
Dann nimmst du eine Combobox und ziehst sie in der Toolbar
auf!
Somit hast du die Combobox wiebei Firefox in der Toolbar.
Das selbe machst du mit der Textbox :smile:

Das hatte ich schon alles so, weil das nachher auch in einer Coolbar verankert werden soll. Ich habe es nur nicht geschafft DropDown und Textbox in dasselbe Band einzufügen. Daruaf, dass man eine Textbox in einer Toolbar aufziehen kann, hätte ich aber wirklich auch kommen können…Danke!

Ja ich kenne ja noch deinen Button, der etwas anders war, als
der VB eigene und das schreckt mich eigentlich ab. Aber an dem
Frame wäre ich trotzdem einmal interessiert!

Das meiste sind nur die Eigenschaften und die Darstellung. Du
kannst dir natuerlich auch aus VB Bordeigenen Mitteln ein
Steuerelement zusammensetzen und dann compilieren. Dazu musst
du dann nicht viel Source schreiben :smile:

Ja du kannst mir ja auch mal dein Frame schicken und dann werde ich mich mal hereinarbeiten, wenn ich Zeit finde.

Gruß und Danke, Simon

Hallo Simon,

  1. Welche Möglichkeiten gibt es, den Programmcode bei VB6
    übersichtlich zu gestalten? Ich versuche immer Spaghetti-Code
    zu vermeiden, den Code in allgemeine Prozeduren aufzuteilen
    und diese auf Module zu verteilen.
    Gibt es da noch irgendeine „goldene Regel“? Lohnt es sich mal
    Klassenmodule anzuschauen, ich weiß nämlich nicht wirklich,
    wozu sie dienen.

Das meiste wurde schon gesagt.
Wichtig ist es für Variablen und Funktionen/Subroutinen aussagekräftige Namen zu verwenden. Bei einem Compiler spielt die Länge der Namen keine Rolle. Bei Interpretern haben lange Namen noch die Laufzeit verlängert.

Einrücken nicht vergessen, dadurch wird die Struktur sichtbar. Ich rücke immer um 2 Positionen ein, aber das ist Geschmackssache:

 If .... Then
 Befehl
 If .... Then
 NochEinBefehl
 End If
 Else
 HierTutSichAuchWas
 Endif
  1. Wie kann ich meine Benutzeroberfläche „schön“ und
    übersichtlich gestalten. Gibt es eine Seite mit Tipps oder so
    etwas…(ich weiß selbst nicht ganz, was ich hören möchte xD)

Grundsätzlich ist weniger mehr !

2.1) Ich habe einige Pakete mit Daten (z. b. Gesamt: Stunden,
Kilometer, Durchschnitt…; siehe Bild:
http://home.arcor.de/simpsons-fun/programmoberflaech… ).
Wie kann ich so etwas am übersichtlisten darstellen?

Mich haben im ersten Moment die ganzen Überschriften „erschlagen“.

Die ganzen „Hilfsinformationen“ sind mächtig und die Daten ganz klein gehalten. Ich muss da die wirklichen Informationen richtig suchen.
Grundsätzlich sind doch aber die Daten dasjenige was man wissen möchte ??
Du solltest es so gestalten, dass einem die Daten als Erstes in die Augen springen.

Ich schreibe noch oft Oberflächen für Steuerungen, dabei ist das Konzept recht einfach gehalten:
Normales Windowsgrau als Hintergrund.
Die wichtigen Grössen sind auch gross dargestellt.
Grauer Hintergrund = Wert nicht aktiv (ausgeschaltet)
Grüner Hintergrund = Eingeschaltet, Wert im gültigen Bereich.
Roter Hintergrund = Störung, Wert ausserhalb der Norm
Gelber Hintergrund = Spezielle Abläufe, welche die Messung gerade unterbrechen (wie z.B. ein automatischer Abgleich)

Damit erkennt man auch auf 10m Entfernung wie der Zustand der Maschine gerade ist. Bei Rot musst du zum Monitor (rennen) und nachsehen was gerade schief geht.
Bei grün kannst du bleiben wo du gerade bist.
Und bei Gelb musst du auch nicht eingreifen.

http://zehntner.com/html/download/prospekt_zol1190_d…
Ab Seite 3 siehst du was ich meine, gerade weil im Prospekt die Details nicht lesbar sind (Das Design ist auch schon an die 10 Jahre alt).
Grundsätzlich muss man dabei aber berücksichtigen, dass der Mann nicht dauernd vor dem Monitor steht. Dies ist bei diesem Design extra berücksichtigt. Also nicht direkt für dein Programm brauchbar.

MfG Peter(TOO)

Hallo Peter,

Einrücken nicht vergessen, dadurch wird die Struktur sichtbar.
Ich rücke immer um 2 Positionen ein, aber das ist
Geschmackssache:

If … Then
Befehl
If … Then
NochEinBefehl
End If
Else
HierTutSichAuchWas
Endif

Jo, das mache ich schon so, sonst würde man ja gar nichts erkennen.

Grundsätzlich ist weniger mehr !

Mich haben im ersten Moment die ganzen Überschriften
„erschlagen“.

Die ganzen „Hilfsinformationen“ sind mächtig und die Daten
ganz klein gehalten. Ich muss da die wirklichen Informationen
richtig suchen.
Grundsätzlich sind doch aber die Daten dasjenige was man
wissen möchte ??
Du solltest es so gestalten, dass einem die Daten als Erstes
in die Augen springen.

Ja danke, das brauchte ich, eine objektive Darstellung. Ich seh das Bild fast jeden Tag und mich stört irgendetwas daran. Aber das ist ja dann Gewohnheit und man wird „Betriebsblind“. Ich versuche es einmal nach deinen Aussagen zu verbessern.

Ich schreibe noch oft Oberflächen für Steuerungen, dabei ist
das Konzept recht einfach gehalten:
Normales Windowsgrau als Hintergrund.
Die wichtigen Grössen sind auch gross dargestellt.
Grauer Hintergrund = Wert nicht aktiv (ausgeschaltet)
Grüner Hintergrund = Eingeschaltet, Wert im gültigen Bereich.
Roter Hintergrund = Störung, Wert ausserhalb der Norm
Gelber Hintergrund = Spezielle Abläufe, welche die Messung
gerade unterbrechen (wie z.B. ein automatischer Abgleich)

Damit erkennt man auch auf 10m Entfernung wie der Zustand der
Maschine gerade ist. Bei Rot musst du zum Monitor (rennen) und
nachsehen was gerade schief geht.
Bei grün kannst du bleiben wo du gerade bist.
Und bei Gelb musst du auch nicht eingreifen.

http://zehntner.com/html/download/prospekt_zol1190_d…
Ab Seite 3 siehst du was ich meine, gerade weil im Prospekt
die Details nicht lesbar sind (Das Design ist auch schon an
die 10 Jahre alt).
Grundsätzlich muss man dabei aber berücksichtigen, dass der
Mann nicht dauernd vor dem Monitor steht. Dies ist bei diesem
Design extra berücksichtigt. Also nicht direkt für dein
Programm brauchbar.

Ja gut, das betrifft mich ja nicht ganz. Maschinen steuern meine Programme noch nicht, kann ja aber noch werden…

Ich danke dir vielmals für deine Antwort,
Gruß, Simon

Hallo Simon,

Okay das hört sich sehr komliziert an! Leider vestehe ich sehr
wenig, aber ich werde das mal Zeile für Zeile „übersetzten“…

Nein ist es nicht. Das schlimme ist nur die Declaration, wie ich sie dir gepostet haben. Der Aufruf erfolgt dann zum. Bsp.

On error resume next
Dim C as Control
For each c in me
 ActivateWindowTheme c.hwnd
next
on error goto 0 

Das hatte ich schon alles so, weil das nachher auch in einer
Coolbar verankert werden soll. Ich habe es nur nicht geschafft
DropDown und Textbox in dasselbe Band einzufügen. Daruaf, dass
man eine Textbox in einer Toolbar aufziehen kann, hätte ich
aber wirklich auch kommen können…Danke!

Macht nichts :smile: Mir fallen manchmal auch nicht einmal die simpelsten Sachen ein :s

Aber vom Prinzip her kannst du 3 Varianten verwenden!
1: Durch das aufziehen des Elementes
2: Durch setzen der Container Eigenschaft
3: Durch die API SetParent

Ja du kannst mir ja auch mal dein Frame schicken und dann
werde ich mich mal hereinarbeiten, wenn ich Zeit finde.

Ich habe mal soeben ein neues Thema eröffnet und dort den Surce gepostet :smile:
Aber was mir aufgefallen ist ( Ich habe mal den Link gesehen)
Du verwendest nicht den XP Style! Wieso?
Mache dich doch der Manifest Datei zu nutze und biete den Anwender die Möglichkeit deine Anwendung im XP Style oder win2k Style ausschauen zu lassen :smile:

Gruß und Danke, Simon

MfG Alex

1 Like

Hi Alex,

On error resume next
Dim C as Control
For each c in me
ActivateWindowTheme c.hwnd
next
on error goto 0

So, Moment…
Ich füge deine Declaration zu meinen Programmcode hinzu. Aufgerufen wird das dann mit obenstehendem Code. Und dann brauche ich noch eine Manifest-Datei (oder verwechsel ich jetzt etwas), in der steht wie jedes einzelne Steuerelement auszusehen hat?!?
Beim googeln ist ist mir der Unterschied zwischen Themes und Visual Styles aufgefallen. Wovon sprechen wir?

Ich habe mal soeben ein neues Thema eröffnet und dort den
Surce gepostet :smile:

Danke. Beim ersten Versuch komm bei „Private objGDI As clsDrawGDI“ auf der Userform der Fehler „Ein Modul hat einen unzulässigen Typ“. Aber da kann ich erst noch einmal selbst gucken.

Aber was mir aufgefallen ist ( Ich habe mal den Link gesehen)
Du verwendest nicht den XP Style! Wieso?

Mhm, weil ich bisher nie etwas davon gehört habe?

Mache dich doch der Manifest Datei zu nutze und biete den
Anwender die Möglichkeit deine Anwendung im XP Style oder
win2k Style ausschauen zu lassen :smile:

Erübrigt sich das nicht, wenn ich Themes benutze? Und sonst, meinst du das hier? http://www.activevb.de/rubriken/kolumne/kol_18/xpthe… Ist das auch Vista-tauglich?

Gruß, Simon

Hallo Simon,

So, Moment…
Ich füge deine Declaration zu meinen Programmcode hinzu.
Aufgerufen wird das dann mit obenstehendem Code. Und dann
brauche ich noch eine Manifest-Datei (oder verwechsel ich
jetzt etwas), in der steht wie jedes einzelne Steuerelement
auszusehen hat?!?
Beim googeln ist ist mir der Unterschied zwischen Themes und
Visual Styles aufgefallen. Wovon sprechen wir?

Nein :S
Da hast du etwas falsch verstanden :S
Also deine Anwendung, da sehen doch die Steuerelemente ( SE) aus wie unter win2K.
Willst du deiner Anwendung den XP Flair geben, also das die SE so ausschauen wie unter XP, so musst du mit der Manifest Datei arbeiten :smile:

Was die Sache mit den von mir angegebenen Source angeht.
Richtig ist das du die API Declaration noch machen musst. Danach sollte der Code die SE abaendern :smile: Natuerlich solltest du vorher schauen ob sie schon den Flair haben und auch unterstuetzen :smile:

Zu deiner Frage ob wir von Themes oder Styles reden :smile:
Wir reden von Themes. Aber auf der von dir geposteten Seite, ist eigentlich alles schön erklärt. Unter anderem auch die Sache mit der Manifest Datei :smile:

Der Unterschied darin ist folgender. Arbeitest du mit einer Manifest Datei, so werden alle SE geaendert. Wobei beim arbeiten mit den API’s du jedes einzeln ein oder ausschalten kannst :smile:

Danke. Beim ersten Versuch komm bei „Private objGDI As
clsDrawGDI“ auf der Userform der Fehler „Ein Modul hat einen
unzulässigen Typ“. Aber da kann ich erst noch einmal selbst
gucken.

Ups, da ist mir nen Fehler unterlaufen. Du musst einKlassenmodul erstellen und nicht ein normales :smile: Das erkennt man aber an der Set Anweisung :smile: Denn da wird eine neue Instanz der Klasse erstellt :smile:

Mhm, weil ich bisher nie etwas davon gehört habe?

Jetzt aber schon :wink:

Erübrigt sich das nicht, wenn ich Themes benutze? Und sonst,
meinst du das hier?
http://www.activevb.de/rubriken/kolumne/kol_18/xpthe…
Ist das auch Vista-tauglich?

Richtig, den Unterschied der 2 Sachen habe ich dir weiter oben ja gepostet :smile:
On das alles unter Vista funktioniert, hm das kann ich dir nicht sagen. Muesste man mal probiern :smile:

Gruß, Simon

MfG Alex

1 Like

Hallo Alex,

ich danke dir nochmals für deine ausführliche Antwort. Ich kann jetzt einige Erfolgserlebnisse verbuchen :wink:

Mit Hilfe der Seite, habe ich es dann jetzt geschafft meine Anwendung per Manifest-Datei im XP-Syle „leuchten“ zu lassen. Mit …For each c in me ActivateWindowTheme c.hwnd… funktioniert es jetzt auch alles zwischen XP und win2k umzuschalten (ist auch Vista-tauglich). Das werde ich dann auch auf jeden Fall einbauen.

Wollte ich nun etwas haben, wie ich zuerst unter Themes verstanden habe, müsste ich mir selbst etwas schreiben mit For each Label in me….?!? Ich meine jetzt z. B., wenn alle Labels dieselbe Farbe/Schriftart…haben sollen.

Zu deinem Frame: Das funktioniert jetzt auch. Außerdem sieht es echt gut aus, wie ich finde. Aber wie bekomme ich jetzt z. B. ein Label darauf? Aufziehen funktioniert nämlich nicht. Ich gucke mir den Code wohl in den Weihnachtsferien mal richtig an.
Wie ist das, dürfte ich das eigentlich auch in einem Projekt verwenden, wenn ich dich irgendwie als Entwickler dieses Steuerelements angeben würde?

Danke und Gruß, Simon

Hallo Simon,

ich danke dir nochmals für deine ausführliche Antwort. Ich
kann jetzt einige Erfolgserlebnisse verbuchen :wink:

Na das ist doch super :smile:

Mit Hilfe der Seite, habe ich es dann jetzt geschafft meine
Anwendung per Manifest-Datei im XP-Syle „leuchten“ zu lassen.
Mit …For each c in me ActivateWindowTheme c.hwnd…
funktioniert es jetzt auch alles zwischen XP und win2k
umzuschalten (ist auch Vista-tauglich). Das werde ich dann
auch auf jeden Fall einbauen.

Das habe ich auch immer dabei :smile: Ist schnell getippselt und schaut chick aus :smile: Du musst nur darauf achten, das wenn du nur mit der manifest datei arbeitest, du dann nur Steuerelemente der Version 5 nutzen kannst :confused:
Die Manifest Datei direkt in VB einbinden, davon würde ich dir auch abraten. Wieso das stand ja auch auf der Seite :wink:

Wollte ich nun etwas haben, wie ich zuerst unter Themes
verstanden habe, müsste ich mir selbst etwas schreiben mit For
each Label in me….?!? Ich meine jetzt z. B., wenn alle Labels
dieselbe Farbe/Schriftart…haben sollen.

nein, das geht nen bissl anders :s
Um alle Labels auf deiner Form zu bekommen, so machst du das wiefolgt

 dim c as control
 for each c in me
 If TypeOf c is Label
 'Hier dann deine Zuweisung
 'c ist nun das Label :wink:
 end if
 next

Zu deinem Frame: Das funktioniert jetzt auch. Außerdem sieht
es echt gut aus, wie ich finde. Aber wie bekomme ich jetzt z.
B. ein Label darauf? Aufziehen funktioniert nämlich nicht. Ich
gucke mir den Code wohl in den Weihnachtsferien mal richtig
an.

Das sollte es eigentlich :s
Zur Not, erstelle eine Picturebox. Stelle den Hintergrund der Picturebox auf die des Frames! In diese Picturebox setzt du deine Steuerelemente ( Label’s etc.) und setzt dann die Picturebox in das Frame. Das klappt definitiv!

Aber ich schicke dir mal den Button und den Frame, compiliert als OCX und den Source auf deine Mail Adresse. Wird aber sicher erst morgen was werden :s Dann sollte es def. klappen :smile:
Vielleicht liegt ein Kopierfehler von meiner oder deiner Seite aus vor :s

Wie ist das, dürfte ich das eigentlich auch in einem Projekt
verwenden, wenn ich dich irgendwie als Entwickler dieses
Steuerelements angeben würde?

Du Kannst sie ruhig nehmen und musst mich auch net erwaehnen :wink:
Ich programmiere seit x Jahren, Just for Fun :smile:
Und man freut sich doch wenn man anderen helfen kann oder denen die Arbeit gefaellt :smile:

Danke und Gruß, Simon

MfG Alex

Hallo Simon,

ich danke dir nochmals für deine ausführliche Antwort. Ich
kann jetzt einige Erfolgserlebnisse verbuchen :wink:

Na das ist doch super :smile:

Jo, das finde ich auch!

Mit Hilfe der Seite, habe ich es dann jetzt geschafft meine
Anwendung per Manifest-Datei im XP-Syle „leuchten“ zu lassen.
Das werde ich dannauch auf jeden Fall einbauen.

Das habe ich auch immer dabei :smile: Ist schnell getippselt und
schaut chick aus :smile: Du musst nur darauf achten, das wenn du
nur mit der manifest datei arbeitest, du dann nur
Steuerelemente der Version 5 nutzen kannst :confused:
Die Manifest Datei direkt in VB einbinden, davon würde ich dir
auch abraten. Wieso das stand ja auch auf der Seite :wink:

Ja ich arbeite ja jetzt mit beidem. Ein Frage noch, da ich bei der Dekleration nicht so fit bin. Wenn ich alle Steuerelemente aller Formen ändern will, wie sieht dann der Code aus. Ich meine das so ähnlich:

 Dim C as Control
 Dim F as Form 
 For each F in ??
 For each C in F
 ActivateWindowTheme c.hwnd
 Next C
 Next F

Um alle Labels auf deiner Form zu bekommen, so machst du das
wiefolgt

dim c as control
for each c in me
If TypeOf c is Label
'Hier dann deine Zuweisung
'c ist nun das Label :wink:
end if
next

Ja so ist das super, danke!! So etwas wie TypeOf kannte ich z. B. nicht. Dann werde ich mir da wohl mal etwas basteln.

Zu deinem Frame: Das funktioniert jetzt auch. Außerdem sieht
es echt gut aus, wie ich finde. Aber wie bekomme ich jetzt z.
B. ein Label darauf? Aufziehen funktioniert nämlich nicht. Ich
gucke mir den Code wohl in den Weihnachtsferien mal richtig
an.

Das sollte es eigentlich :s
Zur Not, erstelle eine Picturebox. Stelle den Hintergrund der
Picturebox auf die des Frames! In diese Picturebox setzt du
deine Steuerelemente ( Label’s etc.) und setzt dann die
Picturebox in das Frame. Das klappt definitiv!

Aber ich schicke dir mal den Button und den Frame, compiliert
als OCX und den Source auf deine Mail Adresse. Wird aber
sicher erst morgen was werden :s Dann sollte es def. klappen

)

Vielleicht liegt ein Kopierfehler von meiner oder deiner Seite
aus vor :s

Ja, ich habe grade alles noch einmal gemacht und leider dasselbe Ergebnis. Es wäre echt Nett, wenn du mir das einmal Mailen könntest. Hat ja ruhig Zeit…

Wie ist das, dürfte ich das eigentlich auch in einem Projekt
verwenden, wenn ich dich irgendwie als Entwickler dieses
Steuerelements angeben würde?

Du Kannst sie ruhig nehmen und musst mich auch net erwaehnen
:wink:
Ich programmiere seit x Jahren, Just for Fun :smile:
Und man freut sich doch wenn man anderen helfen kann oder
denen die Arbeit gefaellt :smile:

Das ist echt Nett. Vielen Dank. Ich wollte nur zur Sicherheit fragen und dann freut es mich, dich glücklich machen zu können :wink:

Gruß, Simon

Hi,

 Dim C as Control
 Dim F as Form
 For each F in Forms
 For each C in F
 ActivateWindowTheme c.hwnd
 Next 
 Next

Gruß, Rainer

Hi,

Dim C as Control
Dim F as Form
For each F in Forms
For each C in F
ActivateWindowTheme c.hwnd
Next
Next

Vielen Dank, das hat mir gefehlt!

Gruß, Simon

Hallo Simon,

schau mal in dein Postfach. Du solltest Post haben :wink:

MfG Alex

Hallo Simon,

schau mal in dein Postfach. Du solltest Post haben :wink:

MfG Alex

Hallo Alex,

Jop, ist angekommen. Jetzt funktioniert alles wie es sollte, auch der Button.
Vielen Dank, nachmal!!

Dann wünsche ich noch einen schönen Restsonntag,
Gruß, Simon