Español
Fuente/ Codesnippets

Profano Tabs

 

Christian
Eichler
¿Cómo se puede Yo en Profano² 6.6 Tabs redactar ?
Irgenwie tener Yo como en el Profano - Ayuda nichts gefunden ...
Auch google ha no sonderlich geholfen (en ehrlich a ser: nada !)

mfg Christian
 
Debian Lenny, Intel Celeron 2,8 Ghz, 768 MB Ram && Win XP Pro, Intel C2D 1,66Ghz, 2 GB Ram ... PROFAN² 6.6
06.07.2007  
 




RGH
Das Tab-Control wurde desafortunadamente sólo con Versión 7 eingeführt.

Saludo
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
06.07.2007  
 




Christian
Eichler
Öhm ... naja, schade ...
Aber el problema lässt se sí entonces lösen ...
 
Debian Lenny, Intel Celeron 2,8 Ghz, 768 MB Ram && Win XP Pro, Intel C2D 1,66Ghz, 2 GB Ram ... PROFAN² 6.6
06.07.2007  
 




Dietmar
Horn
¡Hola Christian,

lade Usted el XProfan-Manager runter, entonces hast Usted alles, qué Usted para Profano² y XProfan necesidad. Was en el Manager no enthalten es, el Usted necesita auch no necesariamente.

Hier eins de más Demos a Tab-Controls:
KompilierenMarcaSeparación
TabControl (Registerkarten) erstellen (ab Profan² 6.6)
Lauffähig ab Profan-Version 5.0
Beispiel zur Verwendung eines TabControls (Registerkarten).
Version 1.5  8.12.2002.      Das Programmbeispiel kann frei benutzt werden, für
Schäden kann keine Haftung übernommen werden.
Autor: Gerhard Putschalka
email: g.putschalka@web.de
homepage: http://members.telering.at/g.putschalka/index.html
-------------------------------------------------------------------------------
Das Beispiel läuft ab Version 6.6. Es kann aber auch mit Version 5 benutzt werden.
Dazu sind 2 kleine Änderungen erforderlich, die im Programm beschrieben sind.
-------------------------------------------------------------------------------
Um Registerkarten in einem Dialog verwenden zu können sind folgende Schritte
erforderlich:
- TabControl erstellen
- TabItems (Registerkarten) einfügen
- Elemente wie Texte, Editfelder, Icons etc. erstellen
- diese Elemente, abhängig davon, welche Registerkarte gewählt ist aktivieren bzw.
deaktivieren
-------------------------------------------------------------------------------
Im Programm wird auf der ersten Registerkarte eine Listbox angezeigt. Wird eine Zeile
ausgewählt, werden die weiteren Daten zu dieser Zeile in den anderen Registerkarten
angezeigt.
Mit dem Ende Button werden die Daten der ausgewählten Zeile angezeigt und das
Programm beendet.
-------------------------------------------------------------------------------
Declare Text21%,Text22%,Text23%,Edit21%,Edit22%,Edit23%,Libx1%,Libx2%,Libx3%,Index%
Declare Text31%,Edit31%,Text32%,Edit32%,Text33%,Edit33%,Edit41%,Libx0%,IcHndl&
Declare Akt%,TabDlg&,TabCntrl&,TabAktKz&,OK%,Abbruch%,Text#,ItText#,AusLoop%,PrtKz%
Declare Feld01$,Feld21$,Feld22$,Feld23$,Feld31$,Feld32$,Feld33$,Feld41$
= = = = = = = = =
>>> hier aktivieren für Profan Version 5 <<<
Def @CreateWindowEx(12) ! USER32,CreateWindowExA
>>> Ende aktivieren <<<
= = = = = = = = =

Proc Setze_Text

    die Texte werden in Listboxes gespeichert. Libx0 wird direkt auf der ersten
    Registerkarte angezeigt, die anderen Boxen sind unsichtbar und werden nur zum
    Speichern der Texte benutzt (könnten ebensogut Arrays sein).
    Texte für Registerkarte 1
    @AddString(Libx0%,Augenoptik Fritz)
    @AddString(Libx0%,Der Computershop)
    @AddString(Libx0%,Meyers Schuhladen)
    @AddString(Libx0%,Sanitär Baumarkt)
    @AddString(Libx0%,Taucherparadies)
    @AddString(Libx0%,Tiefenrausch)
    @AddString(Libx0%,Tierfutterhandel)
    Texte für Registerkarte 2 - bestehen aus 3 Substrings
    @AddString(Libx1%,Brillenweg 30;22864;Norderstedt)
    @AddString(Libx1%,Computerstraße 8;65760;Eschborn)
    @AddString(Libx1%,Steinplatz 2;14089;Berlin;)
    @AddString(Libx1%,Wasserleitungsstraße25;40764;Langenfeld)
    @AddString(Libx1%,Hahnenstraße 52;63128;Dietzenbach)
    @AddString(Libx1%,Kaiserstraße 10;60313;Frankfurt)
    @AddString(Libx1%,Im Taubengrund 1;84028;Landshut)
    Texte für Registerkarte 3 - bestehen aus 3 Substrings
    @AddString(Libx2%,040;521020-0;521020-35)
    @AddString(Libx2%,06196;909911;909912)
    @AddString(Libx2%,030;45042389-0;45042389-21)
    @AddString(Libx2%,02173;708050-0;708050-10)
    @AddString(Libx2%,06074;43878;43879)
    @AddString(Libx2%,069;5091719-0;5091719-0)
    @AddString(Libx2%,0871;80140;80144)
    Texte für Registerkarte 4
    @AddString(Libx3%,Gustav Mahler  Klappe 13)
    @AddString(Libx3%,Franz Liszt)
    @AddString(Libx3%,Richard Wagner, Klappe526)
    @AddString(Libx3%,Johann S. Bach, Klappe 23)
    @AddString(Libx3%,Emmerich Kalman)
    @AddString(Libx3%,Franz Lehar)
    @AddString(Libx3%,Robert Stolz)
    Return

EndProc

==== die Daten der einzelnen Registerkarten müssen so manipuliert werden, daß
immer nur die Daten einer Karte aktiv sind. Die anderen werden deaktiviert.

PROC Control_Tab1

    Parameters OpCode%   0 = Elemente verstecken, 1 = Elemente anzeigen
    anzeigen heißt, das Element auf richtige Größe setzen und enablen                                                                                                anzeigen hei	t das Element auf richtige Gre setzen und enablen
    verstecken heißt das Element auf Größe 0 setzen und disablen

    If OpCode%

        setwindowpos Libx0%  = 30,60-280,64;0    Listbox mit Kundenname zeigen
        setwindowpos IcHndl& = 0,0-0,0;0

    Else

        setwindowpos Libx0%  = 0,0-0,0;0         Listboxgröße auf 0 setzen

    EndIf

    Enablewindow Libx0%,OpCode%                 Listbox anzeigen / verbergen
    Return

ENDPROC

PROC Control_Tab2

    Parameters OpCode%

    If OpCode%

        setze Größe von Text- und Editfeldern
        Setwindowpos Text21% = 50, 85-60,20;0      Text: Straße
        Setwindowpos Text22% = 50,110-60,20;0      Text Plz
        Setwindowpos Text23% = 50,140-60,20;0      Text Ort
        Setwindowpos Edit21% = 100,85-220,20;0     Edit Straße zeigen
        Setwindowpos Edit22% = 100,110-60,20;0     Edit Plz zeigen
        Setwindowpos Edit23% = 100,140-220,20;0    Edit Ort zeigen
        Setwindowpos IcHndl& = 20,160-32,32;0

    Else

        setze Größe von Text- und Editfeldern auf 0
        Setwindowpos Text21% = 0,0-0,0;0           Text: Straße
        Setwindowpos Text22% = 0,0-0,0;0           Text Plz
        Setwindowpos Text23% = 0,0-0,0;0           Text Ort
        Setwindowpos Edit21%  = 0,0-0,0;0          Edit Straße
        Setwindowpos Edit22%  = 0,0-0,0;0          Edit Plz
        Setwindowpos Edit23%  = 0,0-0,0;0          Edit Ort

    EndIf

    Enablewindow Edit21%,OpCode%                  Edit Stra	e
    Enablewindow Edit22%,OpCode%                  Edit Plz
    Enablewindow Edit23%,OpCode%                  Edit Ort
    Return

ENDPROC

PROC Control_Tab3    Telefonregister

    Parameters OpCode%

    If OpCode%

        setze Größe von Text- und Editfeldern
        Setwindowpos Text31%= 40, 85-60,20;0
        Setwindowpos Text32%= 40,110-60,20;0
        Setwindowpos Text33%= 40,140-60,20;0
        Setwindowpos Edit31%= 100, 85-60,20;0
        Setwindowpos Edit32%= 100,110-100,20;0
        Setwindowpos Edit33%= 100,140-100,20;0
        Setwindowpos IcHndl&  =0, 0-0,0;0

    Else

        setze Größe von Text- und Editfeldern auf 0
        Setwindowpos Text31% =0,0-0,0;0
        Setwindowpos Text32% =0,0-0,0;0
        Setwindowpos Text33% =0,0-0,0;0
        Setwindowpos Edit31%  =0,0-0,0;0
        Setwindowpos Edit32% =0,0-0,0;0
        Setwindowpos Edit33% =0,0-0,0;0

    EndIf

    Enablewindow Edit31%,OpCode%
    Enablewindow Edit32%,OpCode%
    Enablewindow Edit33%,OpCode%

ENDPROC

PROC Control_Tab4

    Parameters OpCode%

    If OpCode%

        Setwindowpos Edit41%=40,80-200,20;0
        setwindowpos IcHndl&  =0, 0-0,0;0

    Else

        Setwindowpos Edit41%=0,0-0,0;0

    EndIf

    Enablewindow Edit41%,OpCode%

ENDPROC

PROC INITTAB

    erstelle den Dialog, das TabControl und alle zugehörigen Elemente
    die hier verwendete Struktur TC_ITEM ist in Win32.hlp beschrieben.
    sie hat eine Länge von 28 Bytes
    verwenden wir einen Font
    Usefont Arial,15,0,0,0,0
    Dialog und darinnen das TabControl und die beiden Buttons erstellen
    Let TabDlg&=Createwindow(%Hwnd,Test mit TABs,240,100,350,280)
    = = = = = Entweder/Oder für Profan Version 5 oder > 5 - Anfang
    >>> hier 4 Zeilen aktivieren für Profan Version 5 <<<
    String Text#,0 = SysTabControl32
    String Text#,20 =
    Let TabCntrl&=@CreateWindowEx($0,Text#,@Add(Text#,20),$50010000,8,20,329,
    200,TabDlg&,100,%HInstance,0)
    >>> ODER hier 2 Zeilen aktivieren für Profan Version 6.6 <<<
    Let TabCntrl&=@control(SysTabControl32,,$50010000,8,20,329,
    200,TabDlg&,100, %HInstance)
    >>> Ende aktivieren <<<
    = = = = = Entweder/Oder für Profan Version 5 oder > 5 - Ende
    Font für Beschriftung der Tabs zuordnen
    @SendMessage(TabCntrl&,$030,%Font,0)
    Let ok%=createbutton(TabDlg&,Ende,150,225,80,20)
    Let Abbruch%=createbutton(TabDlg&,Abbrechen,250,225,80,20)
    Long ItText#,0  = 1       Maske. $1 für text, $2 für Icons
    Long ItText#,12 = Text#   Adresse des Textstrings
    Tab-Items Einfügen (4 Registerkarten erstellen)
    String Text#,0=  Kunde / Firma          Text für ersten Reiter
    Long ItText#,20=0                         0 = 1. Tabcontrol
    @SendMessage(TabCntrl&,$1307,0,ItText#)   fügt das 1. TabControl ein
    String Text#,0=  Anschrift              Text für zweiten Reiter
    Long ItText#,20=1                         1 = 2. Tabcontrol
    @SendMessage(TabCntrl&,$1307,1,ItText#)   fügt das 2. TabControl ein
    String Text#,0=  Telefon / Fax          Text für dritten Reiter
    Long ItText#,20=2
    @SendMessage(TabCntrl&,$1307,2,ItText#)
    String Text#,0= Vertreter
    Long ItText#,20=3
    @SendMessage(TabCntrl&,$1307,3,ItText#)
    erstellen der Texte und Editfelder für alle Registerkarten.
    Für die erste Registerkarte wird eine Listbox verwendet
    die hier erstellten Elemente sind noch nicht einer bestimmten Karte zugeordnet!
    ein Icon soll auf einer Registerkarte angezeigt werden
    Let IcHndl& = @CreateIcon(TabCntrl&,DRUCKER,20,160)
    Let Text21% =Createtext(TabDlg&,Straße,0,0,1,0)
    Let Text22% =Createtext(TabDlg&,Plz,0,0,1,0)
    Let Text23% =Createtext(TabDlg&,Ort,0,0,1,0)
    Let Edit21%  =createedit(TabDlg&,,0,0,0,1)
    Let Edit22%  =createedit(TabDlg&,,0,0,0,1)
    Let Edit23%  =createedit(TabDlg&,,0,0,0,1)
    Let Text31% =Createtext(TabDlg&,Vorwahl,0,0,1,0)
    Let Text32% =Createtext(TabDlg&,Telefon,0,0,1,0)
    Let Text33% =Createtext(TabDlg&,Fax,0,0,1,0)
    (wahlweise) Font den Texten zuordnen
    @SendMessage(Text21%,$030,%Font,0)
    @SendMessage(Text22%,$030,%Font,0)
    @SendMessage(Text23%,$030,%Font,0)
    @SendMessage(Text31%,$030,%Font,0)
    @SendMessage(Text32%,$030,%Font,0)
    @SendMessage(Text33%,$030,%Font,0)
    Let Libx0%  =createListbox(TabDlg&,,0, 0,0,1)
    Let Edit31%  =createedit(TabDlg&,,0,0,0,1)
    Let Edit32%  =createedit(TabDlg&,,0,0,0,1)
    Let Edit33%  =createedit(TabDlg&,,0,0,0,1)
    Let Edit41%  =createedit(TabDlg&,,0,0,0,1)
    Let Libx1% = @CreateListBox(%Hwnd,,0,0,0,0)
    Let Libx2% = @CreateListBox(%Hwnd,,0,0,0,0)
    Let Libx3% = @CreateListBox(%Hwnd,,0,0,0,0)
    Texte setzen
    Setze_Text

ENDPROC

PROC TABDIALOG

    die angezeigten Daten können zwar geändert werden, aber es erfolgt kein Update in den
    jeweiligen Listboxen (beim blättern auf einen anderen Kunden verschwinden die Änderungen).
    Waitinput kann hier nicht angewendet werden, weil es auf einen Klick auf
    das Register nicht reagiert.
    daher wird hier auf @Sendmessage gewartet.

    Whilenot AusLoop%

        Let Akt% = @SendMessage(TabCntrl&,$130B,0,0)

        IfNot equ(TabAktKz&,Akt%)

            Let TabAktKz& = Akt%

            If equ(TabAktKz&,0)

                Control_Tab1 1
                Control_Tab2 0
                Control_Tab3 0
                Control_Tab4 0

            Elseif equ(TabAktKz&,1)

                Control_Tab2 1
                Control_Tab1 0
                Control_Tab3 0
                Control_Tab4 0

            Elseif equ(TabAktKz&,2)

                Control_Tab3 1
                Control_Tab1 0
                Control_Tab2 0
                Control_Tab4 0

            Elseif equ(TabAktKz&,3)

                Control_Tab4 1
                Control_Tab1 0
                Control_Tab2 0
                Control_Tab3 0

            Endif

        Elseif Getfocus(Libx0%)

            Let Index% = @GetCursel(Libx0%)
            SetText Edit21%,@Substr$(@GetString$(Libx1%,Index%),1,;)
            SetText Edit22%,@Substr$(@GetString$(Libx1%,Index%),2,;)
            SetText Edit23%,@Substr$(@GetString$(Libx1%,Index%),3,;)
            SetText Edit31%,@Substr$(@GetString$(Libx2%,Index%),1,;)
            SetText Edit32%,@Substr$(@GetString$(Libx2%,Index%),2,;)
            SetText Edit33%,@Substr$(@GetString$(Libx2%,Index%),3,;)
            SetText Edit41%,@GetString$(Libx3%,Index%)
            @Setfocus(TabDlg&)

        Elseif Getfocus(OK%)

            Let PrtKz%=1
            Let AusLoop%=1

        Elseif Getfocus(Abbruch%)

            Let AusLoop%=1

        Endif

    EndWhile

    es erfolgt hier die Sicherung der Felder der zuletzt angezeigten Zeile.
    das muß in separate Felder erfolgen, weil der Dialog zerstört wird.
    Let Feld01$ = @GetString$(Libx0%,Index%)
    Let Feld21$ = @GetText$(Edit21%)
    Let Feld22$ = @GetText$(Edit22%)
    Let Feld23$ = @GetText$(Edit23%)
    Let Feld31$ = @GetText$(Edit31%)
    Let Feld32$ = @GetText$(Edit32%)
    Let Feld33$ = @GetText$(Edit33%)
    Let Feld41$ = @GetText$(Edit41%)
    @Destroywindow(TabDlg&)

ENDPROC

===============
Start Programm
===============
WindowTitle Test mit Tabcontrols
Window 0,0-600,350
settruecolor 1
cls
Dim ItText#,28
Dim Text#,30
INITTAB            Tabcontrol und alle Tab-Elemente in den Tabs aufbauen
Control_Tab1 1     Erstes Tab und deren Elemente aktivieren. Andere deaktivieren
Control_Tab2 0
Control_Tab3 0
Control_Tab4 0
im Tabdialog erfolgt die normale Bearbeitung. Er wird mit Ende oder Abbruch
beendet.
TABDIALOG
wurde mit dem Ende-Button beendet so wird jetzt die zuletzt angezeigte Zeile angezeigt

If PrtKz%

    Print Feld01$
    Print
    Print Feld21$
    Print Feld22$
    Print Feld23$
    Print
    Print Feld31$
    Print Feld32$
    Print Feld33$
    Print
    Print Feld41$
    Print
    Print === Ende. Mit Entertaste beenden. ===
    <
s=s4 href='./../../function-references/XProfan/waitinput/'>WaitInput EndIf Disponer Texto# Disponer ItText# End

Saludo
Dietmar
 
Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V.  [...] 

Windows 95 bis Windows 7
Profan² 6.6 bis XProfan X2 mit XPSE

Das große XProfan-Lehrbuch:  [...] 
06.07.2007  
 




Christian
Eichler
Hehe... nein, el XProfan - Manager voluntad Yo no runterladen. Der ha sí mind. 80 MB ! Das überlastet mi ISDN - Leitung desafortunadamente völlig ... (tja, si uno al Land lebt y lo kein DSL son ...)

Was mich sólo wundert, es, dass como nada en el WinAPI zugegriffen se !
Aber egal ...

Der Code funktionniert, danke !
Umschreiben kann Yo ihn entonces auch todavía
 
Debian Lenny, Intel Celeron 2,8 Ghz, 768 MB Ram && Win XP Pro, Intel C2D 1,66Ghz, 2 GB Ram ... PROFAN² 6.6
07.07.2007  
 




RGH
Christian Eichler
Was mich sólo wundert, es, dass como nada en el WinAPI zugegriffen se!


Zum Verwenden de no direkt en XProfan/Profano integrierten Controls benötigt uno en el Regel no API, como el entsprechenden Características ya en XProfan/Profano disponible son:

@Control(...)
@SendMessage(...)

Damit debería todos regulären Windows-Controls realisieren dejar.

Saludo
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
07.07.2007  
 




Thomas
Freier
Gerhards Ejemplo es el Einstieg, sin embargo wunderte Yo mich, dass el Laptoplüfer permanent ansprang. Taskmanager sagte : 100% PCU Auslastung.
Das Problema bekam Yo no en el Griff.
Beim Einsatz de Tabs debería el Aufstieg a 7.0 (ca. 19€ +), mejor 8.x (ca. 29€ +) folgen.
 
Gruß Thomas
Windows XP SP2, XProfan X2
07.07.2007  
 




RGH
Thomas Freier
Taskmanager sagte : 100% PCU Auslastung.


Das liegt daran, daß en el Mientras que-Bucle des Dialoges kein WaitInput es. Ein Clic en una Tab sería el WaitInput nämlich no verlassen. (Das geschieht en Tabs encima Notify-Messages y el voluntad sólo de Profano 7 berücksichtigt ... eben wegen des hay entonces vorhandenen Tabcontrols.)

Yo sería natürlich auch en todos Fälle a una Actualización raten ;) , aber una Sleep 1 en el Whileschleife sería el Prozessorlast auch en una Normalmaß zurückschrauben. Trotzdem bliebe lo más una Notlösung.

Como aber auch Sleep sólo con Versión 7 una Profano-Befehl wurde, muß él en früheren Versionen por API definiert voluntad:
KompilierenMarcaSeparaciónAnschließend kann el Función Sleep(n%) verwandt voluntad, wobei n% el Tiempo en Millisekunden es, el el Programa anhält y otro Prozessen el möglichkeit son, a trabajo. Ein Sleep(1) después de el Línea con Mientras que debería entonces helfen!

Saludo
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
07.07.2007  
 




Christian
Eichler
Con el Sleep(1) verwende Yo sowieso ya ...
Aber Yo voluntad entonces veces schauen, qué se hacer lässt ... Yo find como ya una solución, danke para eure Ayuda

mfg Christian
 
Debian Lenny, Intel Celeron 2,8 Ghz, 768 MB Ram && Win XP Pro, Intel C2D 1,66Ghz, 2 GB Ram ... PROFAN² 6.6
08.07.2007  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

7.401 Views

Untitledvor 0 min.
Normann Strübli04.02.2023
Georg Teles09.01.2016
H.Brill09.05.2014
thb25.04.2012
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie