Forum | | | | - Seite 1 - |
| Michael Punkt | Hallo Zusammen,
hätte da nochmal zwei Fragen:
1.) Ich habe eine mySQL-DB auf meinem Linux-Server und dort sind Benutzerpasswörter md5-verschlüsselt. Mit Xprofan kann ich zwar ver- und entschlüsseln, aber md5 beherrscht Xprofan nicht. Ich möchte auch nur ungern die Tabelle umstellen, da die md5-verschlüsselten Daten auch weiterhin mit der Browserversion als PHP-Script verglichen werden sollen.
Im Forum habe ich was von einer Unit gelesen die auf den Namen md5.pcu (?) hört. Leider scheint diese Unit nicht mehr zu existieren, denn ich erhalte statt einer Downloadmöglichkeit nur eine leere Seite (Template der HP von xprofan.com ist zwar zu sehen, aber mehr auch nicht.) Gibts das nicht mehr? Falls doch, wo könnte ich die herbekommen?
2.) Autotext ... ist vielleicht nicht die ganz korrekte Bezeichnung, aber ich meine damit das, was beispielsweise mein Firefox mit Eingabefeldern macht. Sprich, habe ich irgendwann mal das Wort "Auto" in dem Eingabefeld eingetragen und ich tippe nur den Buchstaben "A", erscheint "Auto" als Auswahlmöglichkeit,
Ist das möglich, so etwas auch mit Xprofan zu realisieren, oder ist das FF, bzw. nur Brwoserspezifisch möglich? Leider habe ich keine Antworten im Forum oder in der Hilfedatei gefunden.
Nutze zur Zeit nur das "nackte" Xprofan. XPSE folgt in der nächsten Zeit.
Viele Grüße, Michael |
| | | | |
| | | | | - Seite 2 - |
| Jörg Sellmeyer | Das müßte Dir weiterhelfen: KompilierenMarkierenSeparieren $H messages.ph
Cls
Def CBN_EDITCHANGE(1) If(%message=$0111,((&lparam = &(1)) & (HiWord(&wparam) = 5)),0)
Def CB_GetSelStart(1) LoWord(SendMessage(&(1),~CB_GETEDITSEL,0,0))
Declare Edit&,Liste&,n%
Edit& = Create("ChoiceBox",%hwnd,3,300,10,200,240)
Liste& = Create("List",1)
AddString(Edit&,"abcdefg")
AddString(Edit&,"ffafff")
AddString(Edit&,"fdafff")
AddString(Edit&,"test")
AddString(Edit&,"hurra")
AddString(Edit&,"auch ein längerer Text geht")
SetFocus(Edit&)
While 1
WaitInput
If CBN_EDITCHANGE(Edit&)
SendMessage(Edit&,~CB_SHOWDROPDOWN,1,0)wenn man das wegläßt, hats auch was
n% = CB_GetSelStart(Edit&)
SelectString(Edit&,-1,GetText$(Edit&))
SendMessage(Edit&,~CB_SETEDITSEL,0,MakeLong(n%,-1))
EndIf
Wend
|
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 14.08.2009 ▲ |
| |
| | Andreas Miethe
| oder das KompilierenMarkierenSeparieren###############################
XProfan 11.2 Grundgerüst
###############################
###############################
Imports
###############################
###############################
###############################
Header-Dateien
$H windows.ph
$H Messages.ph
###############################
###############################
Definitionen
###############################
DEF &TRUE 1
DEF &FALSE 0
###############################
###############################
Strukturen
###############################
###############################
###############################
Globale Variablen
###############################
Var WindowWidth& = %maxx/3*2
Var WindowHeight& = %maxy/3*2
Var WindowTitle$ = "Grundgerüst"
Var LenTextSave& = 0
###############################
###############################
Fenster zunächst unsichtbar erstellen
WindowTitle WindowTitle$
windowStyle $250
Window 0,0-0,0
Useicon "A"
CLS ~GetSysColor(~COLOR_BTNFACE)
SetDialogFont ~GetStockObject(~ANSI_VAR_FONT)
###############################
Fenster-Aufbau
###############################
Var Choice& = Create("ChoiceBox", %hwnd, 3,10,10,200,400)
AddString(Choice&,"Autocomplete")
AddString(Choice&,"XProfan")
AddString(Choice&,"Besucher")
AddString(Choice&,"Gast")
AddString(Choice&,"Profan")
AddString(Choice&,"ProfanFans")
AddString(Choice&,"SendMessage")
AddString(Choice&,"PostMessage")
AddString(Choice&,"Montag")
AddString(Choice&,"Dienstag")
AddString(Choice&,"Mittwoch")
AddString(Choice&,"Donnerstag")
AddString(Choice&,"Freitag")
AddString(Choice&,"Samstag")
AddString(Choice&,"Sonntag")
###############################
SubClassing einschalten
###############################
SubClass %HWnd, 1
###############################
Style defineren und anzeigen
###############################
SetStyle %hwnd,0,$14CF2000
~SetClassLong(%hwnd,~GCL_STYLE,(~GetClassLong(%hwnd,~GCL_STYLE)- ~CS_HREDRAW - ~CS_VREDRAW))
~Movewindow(%hwnd,%maxx/2-WindowWidth&/2,%maxy/2-WindowHeight&/2,WindowWidth&,WindowHeight&,&TRUE)
###############################
Hautpschleife
#############
Var Ende& = 0
Whilenot Ende&
Waitinput
If %key = 2
OnEnd()
Endif
EndWhile
SubClassing-Procedur
###############################
SubClassProc
If SubClassMessage(%hWnd, ~WM_COMMAND)
If HiWord(&swParam) = ~CBN_EDITCHANGEdas Edit-Control der Combobox ist geändert worden
Var Combotext$ = Upper$(GetText$(&slParam))
Var Textlen& = Len(Combotext$)
Var MaxItem& = GetCount(Choice&)-1
Var hComboEdit& = ~ChildWindowFromPoint(&slParam, 5,5)Edit-Control ermitteln um den Cursor zu setzen
If TextLen& <= LenTextSave&
LenTextSave& = TextLen&
else
If Textlen& > 1Reaktion erst wenn 2 Zeichen einegeben sind
Whileloop 0,MaxItem&
If ComboText$ = Upper$(Left$(Getstring$(&slParam,&Loop),TextLen&))
SelectString(&slParam,-1,Combotext$)
SendMessage(hComboEdit&, ~EM_SETSEL, TextLen&, -1)Cursor im Edfit setzen
LenTextSave& = TextLen&
Break
EndIf
EndWhile
Endif
Endif
Endif
Endif
EndProc
###############################
Ende-Procedur
###############################
Proc OnEnd
Ende& = 1
EndProc
###############################
|
| | | Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 14.08.2009 ▲ |
| |
| | | | | | | |
| | Dieter Zornow | Ja beide Codes funktionieren ohne, dass die Choicebox einen besonderen Style bekommt. Bei Jörgs Code der schön einfach ist verschwindet aber bei mir der Cursor nach außerhalb des Fensters und kommt erst wieder zurück wenn die Choicebox wieder geschlossen ist, das ist unschön.
bei Andreas Code ist mir unklar warum der Windowstyle erst auf $250, das heißt ohne Titelleiste gesetzt wird und dann unten wieder auf mit Titelleiste gesetzt wird. Wenn ich oben gleich z.B. Windowstyle 63 wähle gehts doch genau so gut. Könnte mich mal jemand aufklären. |
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 14.08.2009 ▲ |
| |
| | Andreas Miethe
| Hallo Dieter,
der Haupt-Code ist ein Template das immer geladen wird, wenn ich per rechter Maustaste mit "Neu" ein neues PRF-Dokument anlege. Sinn davon ist ( Fensterstyle ), dass das Fenster zuerst unsichtbar angelegt wird, dann werden die Fensterelement angelegt und erst wenn alles fertig ist, wird das Fenster angezeigt. |
| | | Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 14.08.2009 ▲ |
| |
| | Dieter Zornow | Hallo Andreas,
ja das leuchtet mir ein, ich hatte mich nur gewundert weil es für dieses Snippet nicht notwendig ist. Wenn das aber dein Template für alle deine Programme ist ist das natürlich verständlich, da sonst die Titelleiste zu sehen wäre.
Danke für die Aufklärung.
Gruß
Dieter |
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 14.08.2009 ▲ |
| |
| | Frank Abbing | iF, Beitrag=53862, Zeitpunkt=14.08.2009
Kein Style, Subclassing...
Aber schön kompakt, die Listbox integriert. Sieht gut aus, Andreas! Für sehr viele Einträge empfielt sich dann vielleicht besser eine externe Listbox. |
| | | | |
| | Michael Punkt | Da sind ja dann doch ein paar Zeilen mehr notwendig als mein kläglicher Versuch.
Habe beide Beispiele ausprobiert und das von Adreas ist wirklich Super. Das andere von Jörg ist zwar schön kompakt, doch auch mich stört, dass der Mauspfeil veschwindet und erst wiederkommt, wenn das Pulldown weg ist. Und noch einen kleinen Haken hat es. Ich kann kein Wort verwenden/eintippen, was nicht in der Addstring hinterlegt ist. Aber trotzdem Danke. Für einen anderen Bereich kann ich das auch gut verwenden.
Auch wenn ich einiges noch nicht verstehe (gerade was den API-Teil und die SendMessages betrifft), so ist das ein guter Code zum lernen.
Ich habe Andreas Quellcode nun auch modifiziert um eine ini-Datei zu verwenden um neue eingegebene Worte speichern zu können, so fern sie noch nicht in der Liste vorhanden sind. ich habe hierfür zwei Funktionen gebaut. Eine zum einlesen, eine zum schreiben der ini-Datei.
Leider bin ich nun aber an einem Punkt angelangt, an dem ich nicht mehr weiterkomme um das Ganze zu perfektionieren. Es geht um das Entfernen eines Eintrags mittels der "ENTF"-Taste.
Die Abfrage mit @IsKey(~VK_DELETE) funktioniert bei mir nur, wenn das Pulldown nicht zu sehen ist und dann braucht es ja nicht zu funktionieren.
Wie erreiche ich, das bei geöffnetem Pulldown-Menue und einem ausgewählten Menuepunkt der entsprechende Eintrag gelöscht wird? Hierzu ist ganz sicher wieder ein SendMessage notwendig, oder?
Ich hatte es mit @GetState und @GetCount versucht, aber bei beidem kam die Fehlermeldung, das ich das für diesen Typ nicht verwenden könnte.
Hier mal der erweiterte vollständige Quellcode: KompilierenMarkierenSeparieren###############################
XProfan 11.2 Grundgerüst
###############################
###############################
Imports
###############################
###############################
###############################
Header-Dateien
$H windows.ph
$H Messages.ph
###############################
###############################
Definitionen
###############################
DEF &TRUE 1
DEF &FALSE 0
###############################
###############################
Strukturen
###############################
###############################
###############################
Globale Variablen
###############################
Var WindowWidth& = %maxx/3*2
Var WindowHeight& = %maxy/3*2
Var WindowTitle$ = "Grundgerüst"
Var LenTextSave& = 0
Declare intern_AddString$
###############################
###############################
Fenster zunächst unsichtbar erstellen
WindowTitle WindowTitle$
windowStyle $250
Window 0,0-0,0
Useicon "A"
CLS ~GetSysColor(~COLOR_BTNFACE)
SetDialogFont ~GetStockObject(~ANSI_VAR_FONT)
###############################
Fenster-Aufbau
###############################
Var Choice& = Create("ChoiceBox", %hwnd, 3,10,10,200,400)
myCBox_Readlist(Choice&, "Combo1", "")
var button_ok& = Create("Button",%hwnd,"Ok",3,80,100,25)
###############################
SubClassing einschalten
###############################
SubClass %HWnd, 1
###############################
Style defineren und anzeigen
###############################
SetStyle %hwnd,0,$14CF2000
~SetClassLong(%hwnd,~GCL_STYLE,(~GetClassLong(%hwnd,~GCL_STYLE)- ~CS_HREDRAW - ~CS_VREDRAW))
~Movewindow(%hwnd,%maxx/2-WindowWidth&/2,%maxy/2-WindowHeight&/2,WindowWidth&,WindowHeight&,&TRUE)
###############################
Hautpschleife
#############
Var Ende& = 0
Whilenot Ende&
Waitinput
If @GetFocus(button_ok&)
if (@GetText$(Choice&) <> "")
myCBox_Writelist("Combo1", intern_AddString$, @GetText$(Choice&))
myCBox_Readlist(Choice&, "Combo1", @GetText$(Choice&))
endif
EndIf
If @IsKey(~VK_DELETE) AND .... und hier verließen sie ihn
myCBox_DelEntryList
endif
If %key = 2
OnEnd()
Endif
EndWhile
SubClassing-Procedur
###############################
SubClassProc
If SubClassMessage(%hWnd, ~WM_COMMAND)
If HiWord(&swParam) = ~CBN_EDITCHANGEdas Edit-Control der Combobox ist geändert worden
Var Combotext$ = Upper$(GetText$(&slParam))
Var Textlen& = Len(Combotext$)
Var MaxItem& = GetCount(Choice&)-1
Var hComboEdit& = ~ChildWindowFromPoint(&slParam, 5,5)Edit-Control ermitteln um den Cursor zu setzen
If TextLen& <= LenTextSave&
LenTextSave& = TextLen&
else
If Textlen& > 1Reaktion erst wenn 2 Zeichen einegeben sind
Whileloop 0,MaxItem&
If ComboText$ = Upper$(Left$(Getstring$(&slParam,&Loop),TextLen&))
SelectString(&slParam,-1,Combotext$)
SendMessage(hComboEdit&, ~EM_SETSEL, TextLen&, -1)Cursor im Edfit setzen
LenTextSave& = TextLen&
Break
EndIf
EndWhile
Endif
Endif
Endif
Endif
EndProc
###############################
Ende-Procedur
###############################
Proc OnEnd
Ende& = 1
EndProc
###############################
Proc myCBox_Readlist
Parameters CBox$, CBox_Name$, PreSelect$
Declare position$, x%, AList$
x%=1
AList$ = Readini$("D:Comboboxen.dat","Combobox",CBox_Name$)
intern_AddString$ = AList$
ClearList CBox$
while 1
position$ = @SUBSTR$(AList$,x%,",")
if (position$ <> "")
@AddString(CBox$,position$)
endif
inc x%
case position$ = "": Break
endwhile
if (PreSelect$ <> "")
@SelectString(CBox$,-1,PreSelect$)
endif
clear position$
clear AList$
EndProc
Proc myCBox_Writelist
Parameters CBox_Name$, AList$, newValue$
Declare position$, x%, duplicate$
x%=1
while 1
position$ = @SUBSTR$(AList$,x%,",")
if (position$ = newValue$)
duplicate$ = 1
break
endif
inc x%
case position$ = "": Break
endwhile
if (duplicate$ = 0)
AList$ = AList$ + "," + newValue$
writeini "D:Comboboxen.dat","Combobox",CBox_Name$ = AList$
endif
EndProc
Proc myCBox_DelEntryList
EndProc
|
| | | | |
| | Dieter Zornow | Versuche es mal mit "DeleteString(N1,N2)" Mit Getcursel kannst du die Nummer des markierten Eintrages ermitteln. In der Profanhilfe unter "Auswahlboxen" findest du alles |
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 15.08.2009 ▲ |
| |
| | Frank Abbing |
Ich kann kein Wort verwenden/eintippen, was nicht in der Addstring hinterlegt ist. Aber trotzdem Danke.
Schau, genau dafür kannst du dann eine unsichtbare Listbox verwenden, in der deine Wörter stehen! |
| | | | |
| | | | - Seite 3 - |
| | Michael Punkt | GETCURSEL habe ich irgendwie übersehen auf der Hilfeseite der Auswahlboxen. Damit bekomme ich die richtige Nummer, nur ... wie schaffe ich es, dass die ENTF-Taste im geöffneten Pulldown abgefragt wird? Solange das Pulldown-Menue offen ist, reagiert er nicht. Ich hatte es in der while-Hauptschleife mit einem KompilierenMarkierenSeparieren probiert, aber das funktioniert nicht. Vermute ich richtig, dass das angezeigte Dropdown wohl auch eine Art eigenes Fenster ist und eine Abfrage an dieser Stelle gar nicht funktionieren kann?
Herausgefunden habe ich schon, dass ich mit einem CB_GETDROPPEDSTATE wohl abfragen kann, ob ein Dropdown auf oder zu ist: KompilierenMarkierenSeparieren Aber wie erreiche ich es, den fokusierten Eintrag nun mit ENTF-Taste anzusprechen (s. Screenshot)? |
| | | | |
| | | Michael Punkt
dass die ENTF-Taste im geöffneten Pulldown abgefragt wird
Ich würd einfach schonmal schauen, ob z.B. wm_keydown als Nachricht in der SubClassProc landet. Das geht bestimmt auch besser, aber vielleicht ein Anfang.
[offtopic] Dieter Zornow, Beitrag=53863, Zeitpunkt=14.08.2009Ja beide Codes funktionieren ohne, dass die Choicebox einen besonderen Style bekommt. Frabbing, Beitrag=53867, Zeitpunkt=14.08.2009Kein Style, Subclassing... Beide Codes nutzen SubClassing. (macht ihr das irgendwelchen Befehlen fest?) Einmal über die SubClassProc und einmal über Abarbeitung der Nachrichten, die WaitInput zum Verlassen veranlassen. Styles ändern z.B. Darstellung und/oder Verhalten von Controls, beispielsweise ändern ReadOnly-Styles selten was an der Darstellung und nur am Verhalten, wobei Disabled-Styles meist doppelt zuschlagen. KompilierenMarkierenSeparieren[/offtopic] |
| | | | |
|
AntwortenThemenoptionen | 8.730 Betrachtungen |
ThemeninformationenDieses Thema hat 7 Teilnehmer: |