Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Eingabefelder (Edits) mit verschiedenen Eigenschaften (ab Profan² 5.0)
Lauffähig ab Profan-Version 5.0
Edits1 Beispiele von Eingabefeldern (Edits) mit verschiedenen Eigenschaften.
Version 1.0 3.2.2002. Das Programm 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
Die Felder werden im 3D Stil mit dem API-Aufruf CreateWindowEx erzeugt und sollten
daher auch mit Profanversionen ab 5.0-32 einsetzbar sein (es gibt zwar in 4.5
bereits die Funktion @DEF, aber hier sind nur max. 8 Parameter möglich. Das API
CreateWindowEx benötigt jedoch 12 Parameter).
@CreateWindowEx($0000280,Klasse#,Text#,$54810080,X1,Y1,X2,Y2,N,0,%hinstance,$0200)
die Werte für N, X1, Y1, X2, Y2 entsprechen den Angaben wie bei @CreateEdit
Der 4. Parameter bestimmt die Feldeigenschaften:
$5481xxxx
........0 = linksbündige Eingabe
........1 = mittige Eingabe
........2 = rechtsbündige Eingabe
........4 = mehrzeilige Eingabe (MultiEdit ?)
........8 = nur Großbuchstaben (Kleinbuchstaben werden umgesetzt)
.......1. = nur Kleinbuchstaben (Großbuchstaben werden umgesetzt)
.......2. = Password (es werden nur * angezeigt)
.......4. = vertikal Scroll
.......8. = horizontal Scroll. Ist das Feld zu kurz, wird die Anzeige weitergeschoben.
......1.. = Nohideselect ?
......4.. = OEM Convert (der eingegebene String wird in ANSI konvertiert)
......8.. = Read only. Das Feld wird grau angezeigt, erlaubt aber keine Eingabe.
.....2... = nur Zifferneingabe möglich (aber kein Komma, Punkt oder Minus)
diese Werte können auch addiert werden. Sind aber als Hexwerte anzusehen. So ergibt z.B.
8 und 4 zwar den Wert 12 muß aber als Hexwert C eingesetzt werden
(die Zählweise in Hex ist: 0123456789ABCDEF ! Zählt also von 0 bis 15)
Definition der Funktion (link zum API)
Def @CreateWindowEx(12) ! USER32,CreateWindowExA
Declare Links&,LinksG&,LinksB&,LinksP&,LinksA&,LinksD&,Mitte&,Rechts&,OK%,_dlg%,ChkB%
Declare Klasse#,Text#
Windowtitle Eingaben:
Window 0,0-640,450
CLS
Let _dlg% = @CreateDialog(%Hwnd,Eingabefelder mit verschiedenen Eigenschaften,
170,20,470,430)
Dim Klasse#,10
Dim Text#,50
String Klasse#,0 = EDIT muß EDIT lauten
String Text#,0 = ist Vorgabetext für das Eingabefeld (hier leer - kein Wert)
1. linksbündige Eingabe
@CreateText(_dlg%,F1,10,40,20,20)
@CreateText(_dlg%,linksbündig,50,40,80,20)
Let Links& = @CreateWindowEx($0000280,Klasse#,Text#,$54810080,140,40,100,20,_dlg%,0,
%hinstance,$0200)
2. mittige Ausrichtung
@CreateText(_dlg%,F2,10,80,20,20)
@CreateText(_dlg%,mittig,90,80,40,20)
hier wird ein Vorgabewert mit der Erstellung des Feldes mitgegeben
String Text#,0 = 987 Vorgabetext
Let Mitte& = @CreateWindowEx($0000280,Klasse#,Text#,$54810081,140,80,100,20,_dlg%,0,
%hinstance,$0200)
String Text#,0 = Vorgabewert wieder entfernen
3. rechtsbündige Ausrichtung
@CreateText(_dlg%,F3,10,120,20,20)
@CreateText(_dlg%,rechtsbündig,40,120,90,20)
Let Rechts& = @CreateWindowEx($0000280,Klasse#,Text#,$54810082,140,120,100,20,_dlg%,0,
%hinstance,$0200)
setze einen Vorgabewert unabhängig von der Erstellung des Feldes.
SetText Rechts&,F012
4. linksbündige Eingabe, Umsetzung Kleinbuchstaben in Großbuchstaben
@CreateText(_dlg%,F4,10,160,20,20)
@CreateText(_dlg%,linksbündig,50,160,80,20)
@CreateText(_dlg%,Umsetzung in Großbuchstaben,250,160,200,20)
Let LinksG& = @CreateWindowEx($0000280,Klasse#,Text#,$54810088,140,160,100,20,_dlg%,0,
%hinstance,$0200)
5. linksbündige Eingabe, Feldeingabe durch Breite begrenzt. Ist nicht brauchbar, weil
die Zeichenbreite die Begrenzung ergibt! Es können z.B. viel mehr i als M
eingegeben werden.
@CreateText(_dlg%,F5,10,200,20,20)
@CreateText(_dlg%,linksbündig,50,200,80,20)
@CreateText(_dlg%,begrenzte Eingabebreite !,250,200,200,20)
Let LinksB& = @CreateWindowEx($0000280,Klasse#,Text#,$54810000,140,200,100,20,_dlg%,0,
%hinstance,$0200)
6. linksbündige Eingabe, Feldeingabe durch max. Stellenanzahl begrenzt. Ist besser!
Hier spielt die Zeichenbreite keine Rolle.
@CreateText(_dlg%,F6,10,240,20,20)
@CreateText(_dlg%,linksbündig,50,240,80,20)
@CreateText(_dlg%,Eingabe auf 5 Stellen begrenzt,250,240,200,20)
Let LinksA& = @CreateWindowEx($0000280,Klasse#,Text#,$54810080,140,240,100,20,_dlg%,0,
%hinstance,$0200)
@SendMessage(LinksA&,$00C5,5,0) Parameter 3 ist Anzahl max. Stellen (hier 5)
7. linksbündige Eingabe, Password.
@CreateText(_dlg%,F7,10,280,20,20)
@CreateText(_dlg%,linksbündig,50,280,80,20)
@CreateText(_dlg%,Password,250,280,200,20)
Let LinksP& = @CreateWindowEx($0000280,Klasse#,Text#,$54810020,140,280,100,20,_dlg%,0,
%hinstance,$0200)
8. linksbündige Eingabe, geschütztes Feld.
Grundsätzlich muß das Feld nicht direkt als geschützt erstellt werden. Jedes andere
Eingabefeld könnte ebenso durch @SendMessage(Handle&,$00CF,x,0) gesteuert werden
(x: 0 = ungeschützt, 1 = geschützt)
@CreateText(_dlg%,F8,10,320,20,20)
@CreateText(_dlg%,linksbündig,50,320,80,20)
@CreateText(_dlg%,geschützt,250,320,200,20)
Let LinksD& = @CreateWindowEx($0000280,Klasse#,Text#,$54810880,140,320,100,20,_dlg%,0,
%hinstance,$0200)
setze einen Text, damit was angezeigt wird
SetText LinksD&,ABCDEF012
mit der Checkbox kann der Schutz aus- und eingeschaltet werden.
Let ChkB% = @CreateCheckBox(_dlg%,Feld schützen?,140,350,120,20)
setze Checkbox am Beginn auf geschützt
SetCheck ChkB%,1
Anmerkung: das Zuweisen von Texten und das aus- und einschalten des Schutzes ist bei
allen hier verwendeten Feldern anwendbar.
Let OK% = @CreateButton(_dlg%,Ende,380,370,50,25)
@SetFocus(Links&)
freigeben der Bereiche, sie werden nicht mehr gebraucht.
Dispose Klasse#
Dispose Text#
WhileNot @GetFocus(OK%)
WaitInput
Hier wird der Schutz des geschützten Feldes ein- oder ausgeschaltet.
im Parameter 3 wird 0 oder 1 (Zustand der Checkbox) übergeben.
@SendMessage(LinksD&,$00CF,@GetCheck(ChkB%),0)
If (@GetCheck(ChkB%) = 1)
@CreateText(_dlg%,geschützt,250,320,200,20)
Else
@CreateText(_dlg%,nicht geschützt,250,320,200,20)
EndIf
EndWhile
Ergebisanzeige.
Alle Feldinhalte werden, ohne Berücksichtigung der Ausrichtung in den angezeigten
Feldern, linksbündig übergeben!
Print F1 =,@GetText$(Links&)
Print F2 =,@GetText$(Mitte&)
Print F3 =,@GetText$(Rechts&)
Print F4 =,@GetText$(LinksG&)
Print F5 =,@GetText$(LinksB&)
Print F6 =,@GetText$(LinksA&)
Print F7 =,@GetText$(LinksP&)
Print F8 =,@GetText$(LinksD&)
WaitInput warte auf Taste
end