Italia
Fonte/ Codesnippets

Dialogfenster Fontauswahl Rückgabemö Vorgabewerten

 

KompilierenMarkierenSeparieren
Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Dialogfenster: Fontauswahl mit Vorgabewerten und Rückgabemöglichkeit
-------------------------------------------------------------
ChsFont.inc 	               Dialog zur Fontauswahl anzeigen
Eine Beschreibung der Prozedur ist in ChsFont.txt enthalten
Version 1.0  22.2.2001.      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
folgende Declares müssen global und daher ausserhalb der Prozedur sein.
Declare F_ChsFnt#,F_Fnt#,F_Font$,F_Siz%,F_Kurs%,F_Ulin%,F_Bold%,F_Rot%,F_Grn%,F_Blu%
Def ChooseFont(1) ! COMDLG32.DLL,ChooseFontA,#,%

Proc Fontauswahl			 Dialog zur Fontauswahl

    Parameters Font$,Size%,Kurs%,Ulin%,Bold%,Rot%,Grn%,Blu%
    Declare RetCod&,RetCod%,Farbe&
    Let Farbe& = @Rgb(Rot%,Grn%,Blu%)
    Let Size% = Size% * 100 / 75	 Fonthöhe 1000 entspricht 10
    Dim F_Fnt#,80
    Dim F_ChsFnt#,60
    Struktur TChooseFont
    Long F_ChsFnt#,0 = 60          Länge der Struktur
    Long F_ChsFnt#,4 = %hwnd       Handle des Elternfensters (def. Hauptfenster)
    Long F_ChsFnt#,8 = 0           Drucker DC/IC
    Long F_ChsFnt#,12= F_Fnt#      Zeiger zuLogFontStruktur
    Long F_ChsFnt#,16 = 0          10 * Points  des gewählten Fonts
    Long F_ChsFnt#,20 = $00002341  Dialog Flags
    Long F_ChsFnt#,24 = Farbe&     ausgew. Textfarbe
    Long F_ChsFnt#,28 = 0          Daten zur Hook Funktion
    Long F_ChsFnt#,32 = 0          Zeiger zur Hook Funktion
    long F_ChsFnt#,36=  0          Zeiger auf Dialogvorlage
    Long F_ChsFnt#,40=  0          Instancehandle
    long F_ChsFnt#,44=  0          Schriftschnitt
    Long F_ChsFnt#,48=  $00000001  Font Type
    Long F_ChsFnt#,52=  2          minimale erlaubte Fontgröße
    Long F_ChsFnt#,56=  48         maximale erlaubte Fontgröße
    Struktur LogFont
    Long F_Fnt#,0=Size%            Fonthöhe
    Long F_Fnt#,4=20               Fontweite (1000 entspricht 10)
    Long F_Fnt#,8=0
    Long F_Fnt#,12=200             Font-Orientation
    Long F_Fnt#,16=400             ... normal
    String F_Fnt#,20=
    String F_Fnt#,21=
    CaseNot (Bold% = 0) : Long F_Fnt#,16=600    oder fett
    CaseNot (Kurs% = 0) : String F_Fnt#,20=1  kursiv
    CaseNot (Ulin% = 0) : String F_Fnt#,21=1 unterstrichen
    String F_Fnt#,22=            durchgestrichen (nicht benutzt)
    String F_Fnt#,23=0           Zeichensatz
    String F_Fnt#,24=T           Ausgabequalität
    String F_Fnt#,25=T           Clipping
    String F_Fnt#,26=0           Qualität (Schirm)
    String F_Fnt#,27=2           Schriftfamilie
    String F_Fnt#,28=Font$         Name der Schrift
    Let Retcod& = ChooseFont(F_ChsFnt#)
    Let RetCod% = RetCod&
    Attribute auslesen
    die folgenden Variablen sind global definiert und können daher ausserhalb
    der Prozedur benutzt werden.
    Let F_Font$ = @string$(F_Fnt#,28)
    Let F_Siz%  = div(@word(F_ChsFnt#,16),10)
    Let F_Kurs%  = @Ord(@string$(F_Fnt#,20))
    Let F_Ulin%  = @Ord(@string$(F_Fnt#,21))
    CaseNot (F_Kurs% = 0) : Let F_Kurs% = 1

    If (@Long(F_Fnt#,16) > 600)

        Let F_Bold%=1

    else

        Let F_Bold%=0

    endif

    Let F_Rot% = @GetRValue(@long(F_ChsFnt#,24))
    Let F_Grn% = @GetGValue(@long(F_ChsFnt#,24))
    Let F_Blu% = @GetBValue(@long(F_ChsFnt#,24))
    Dispose F_ChsFnt#
    Dispose F_Fnt#
    Return RetCod%

EndProc

-------------------------------------------------------------
goto ausführen       <===== ermöglicht die Ausführung des Testprogrammes.
Beschreibung der Prozedur Fontauswahl (mit Testprogramm)
Mit dem Aufruf der Prozedur Fontauswahl aus einem Profanprogramm wird der Systemdialog zur
Auswahl einer Schrift, der Größe, der Farbe und der Attribute unterstreichen, fett und
kursiv aufgerufen.
Beim Aufruf können bereits die auszuwählenden Werte mitgegeben werden, die dann im System-
dialog entsprechend vorgegeben sind.
Im Dialog können alle diese Werte geändert werden. Diese geänderten Werte werden dann an das
aufrufende Programm zurückgegeben.
Die zurückgegebenen Werte sind in der Form, daß sie mit den Profanbefehlen UseFont und
TextColor verarbeitet werden können.
Version 1.0  22.2.2001.       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
Aufruf:
Fontauswahl F$,S%,K%,U%,D%,R%,G%,B%
wobei
F$ ... String  ... Vorgabe für Font (Schriftart)
S% ... Integer ... Vorgabe für Fontgröße (2 bis
K% ... Integer ... Vorgabe kursiv ( 0 = nein, 1 = ja)
U% ... Integer ... Vorgabe unterstrichen ( 0 = nein, 1 = ja)
D% ... Integer ... Vorgabe bold (fett) ( 0 = nein, 1 = ja)
R% ... Integer ... Vorgabewert für Textfarbe rot (0, 128, 192 oder 255)
G% ... Integer ... Vorgabewert für Textfarbe grün (0, 128, 192 oder 255)
B% ... Integer ... Vorgabewert für Textfarbe blau (0, 128, 192 oder 255)
ist.
Bei der Rückkehr in das aufrufende Programm zeigt der Returncode (@%(0)) die Beendigung an
0 = der Systemdialog wurde abgebrochen, rückgemeldete Werte sind nicht gültig
1 = der Systemdialog wurde korrekt beendet, rückgemeldete Werte sind gültig.
Die Variablen die die rückgegebenen Werte enthalten sind in der Prozedur, jedoch global
definiert. Die Namen sind: F_Font$, F_Siz%, F_Kurs%, F_Ulin%, F_Bold%, F_Rot%, F_Grn%, F_Blu%
Die Farbwerte sind auch hier getrennt und können mit z.B. @Rgb(F_Rot%,F_Grn%,F_Blu%) ver-
arbeitet werden.
Das Attribut Strike (durchstreichen) im Systemdialog wird ignoriert, da es mit UseFont nicht
verwertet werden kann.
Im Programm, welches die Prozedur Fontauswahl verwendet muß die
Anweisung    $I ChsFont.inc    eingesetzt werden.
(! muß im globalen Bereich stehen also nicht innerhalb einer anderen Prozedur !)
Kurzbeschreibung zum Testprogramm.
Nach dem Start wird ein Dialog gezeigt in dem man die Schriftart und die Attribute eingeben
kann. Mit ausführen wird der Systemdialog angezeigt, wobei auf die Attribute positioniert
ist, die vorgegeben wurden. Hier sind Änderungen möglich. Mit ok oder Abbrechen erscheint
wieder der erste Dialog und die Auswahlen werden links im Fenster angezeigt.
================================================
ausführen:		 hier beginnt das Testprogramm.
Declare F$,S%,K%,U%,D%,R%,G%,B%,_dlg%,F_Box%,S_Box%,R_Box%,Ck%,Cu%,Cd%,Zl%,Bok%,BEnde%,Ende%
 $I ChsFont.inc

Proc Ausführen

    lesen der Angaben aus dem Eingabedialog und aufbereiten der Daten für den
    Aufruf von FontAuswahl
    Declare Z$,X%,Z1$,Z2$
    Let F$ = @GetText$(F_Box%)
    Let K% = @GetCheck(Ck%)
    Let U% = @GetCheck(Cu%)
    Let D% = @GetCheck(Cd%)
    Let S% = @Val(@GetText$(S_Box%))
    Let Z$ = @Substr$(@GetText$(R_Box%),2,;)
    Let R% = @Val(@Mid$(Z$,1,3))
    Let G% = @Val(@Mid$(Z$,4,3))
    Let B% = @Val(@Mid$(Z$,7,3))
    Fontauswahl aufrufen
    Fontauswahl F$,S%,K%,U%,D%,R%,G%,B%
    auswerten  der Angaben aus der Fonauswahl

    If (@%(0) = 0)

        Print Return-abgebrochen, die Werte sind ungültig

    Else

        Print Return-ok

    EndIf

    Print Font-;F_Font$,Größe-;F_Siz%
    Print kursiv-;F_Kurs%,unterstr.-;F_Ulin%,fett-;F_Bold%
    Farbe übersetzen
    Let Z$ = @Format$(000,F_Rot%);@Format$(000,F_Grn%);@Format$(000,F_Blu%)
    Let X% = 0

    While (X% < 16)

        Let Z1$ = @ListBoxItem$(X%)
        Let Z1$ = @Substr$(Z1$,2,;)

        If @Equ$(Z1$,Z$)

            Let Z2$ = @Trim$(@Substr$(@ListBoxItem$(X%),1,;))
            Let X% = 16

        EndIf

        Inc X%

    EndWhile

    Print Farbe-;Z2$
    Print ----------
    Return

EndProc

=========
MainLine
=========
windowtitle Test für Fontauswahl
WindowStyle 16
Window 0,0-800,550
settruecolor 1
cls @RGB(255,255,200)
Dialog für Vorgabewerte
Let _dlg%=@createdialog(%Hwnd,Vorgabewerte für Fontauswahl,320,88,460,288)
Let F_Box%=@createchoicebox(_dlg%,,32,24,176,152)
Let S_Box%=@createchoicebox(_dlg%,,224,24,40,152)
Let Ck%=@createcheckbox(_dlg%,kursiv,312,24,110,18)
Let Cd%=@createcheckbox(_dlg%,Fettdruck,312,54,110,18)
Let Cu%=@createcheckbox(_dlg%,unterstrichen,312,84,110,18)
Let R_Box%=@createchoicebox(_dlg%,,32,144,95,104)
Let Bok%=@createbutton(_dlg%,ausführen,312,144,112,24)
Let BEnde%=@createbutton(_dlg%,Ende,312,200,112,24)
@createtext(_dlg%,Schriftart,32,5,90,16)
@createtext(_dlg%,Größe,220,5,90,16)
@createtext(_dlg%,Schriftfarbe,35,125,90,16)
initialisieren der Auswahlboxen
ClearList
AddFonts
@MoveListToChoice(F_Box%)		 Box für Fonts
@SendMessage(F_Box%,$014E,3,0)
ClearList
Let Zl% = 2

While (Zl% < 49)

    If (Zl% < 10)

        addstring @Add$( ,@Str$(Zl%))

    Else

        addstring @Str$(Zl%)

    EndIf

    Inc Zl%

EndWhile

@MoveListToChoice(S_Box%)		 Box für Fontgrößen
@SendMessage(S_Box%,$014E,6,0)
ClearList
AddString Schwarz           ;000000000
AddString Dunkelrot         ;128000000
AddString Dunkelgrün        ;000128000
AddString Ocker             ;128128000
AddString Dunkelblau        ;000000128
AddString Purpur            ;128000128
AddString Blaugrün          ;000128128
AddString Grau              ;128128128
AddString Hellgrau          ;192192192
AddString Rot               ;255000000
AddString Grün              ;000255000
AddString Gelb              ;255255000
AddString Blau              ;000000255
AddString Lila              ;255000255
AddString Aquamarin         ;000255255
AddString Weiß              ;255255255
@MoveListToChoice(R_Box%)		 Box für die Schriftfarben
@SendMessage(R_Box%,$014E,14,0)

WhileNot Ende%

    WaitInput

    If @Getfocus(Bok%)

        Ausführen

    ElseIf @Getfocus(BEnde%)

        a> Ende% = 1

    EndIf

EndWhile

End
 
15.07.2007  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

1.655 Views

Untitledvor 0 min.
H.Brill29.12.2017
mene28.12.2012

Themeninformationen

Dieses Thema hat 1 subscriber:

unbekannt (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie