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 - |
| | Michael Punkt | So, melde mich nach Zwangsabstinenz (Blitzeinschlag in unmittelbarer Nähe mit verhehrenden Folgen für diverse Elektrogeräte ) mit Notequippment wieder zurück.
Ist es nicht so das die Datenbank die Verschlüsselung selbst übernimmt??!?
Nein, so weit ich weiß, kann mySQL nicht selbst verschlüsseln. Das muss man unter PHP mit md5() selbst vornehmen und dann den gehashten Wert in der Tabelle speichern/vergleichen.
Also dieses Control, mal unabhängig von Assembler und Profan2CPP, kann man aber wirklich auch einfach mit XProfan programmieren - ich sehe da gar kein Problem und biete gerne an, wenn ich wieder im Lande bin (spätestens Wochenende wie es aussieht) das herzustellen auch weil jeder andere und ich das bestimmt gut und oft gebrauchen können. Dann gibts ne Include und "schön ist".
Das wäre natürlich Super, denn wenn Du schreibst, dass Du dafür ne ganze Include baust, weiß ich, dass ich wohl einiges vergessen/falsch habe.
So habe ich das letzt aufgebaut, was aber nicht funktioniert.
Ich habe ein Dialogfenster erstellt und eine Combobox mit dem Attribut für CBS_HASSTRINGS: KompilierenMarkierenSeparierenhD% = @Create("Window",%hWnd,"Login",0,0,400,200)
feld_login% = @Control("COMBOBOX", "Test", $50000200, 5, 5, 245, 20, hD%, 0, %hInstance)
Bei der Abfrage des Buttons habe ich folgendes gemacht: KompilierenMarkierenSeparieren Das Ergebnis ist, das gar nichts passiert. Entweder fehlt jetzt hier noch was (jetzt noch schreiben in eine Listbox? Aber wie?), oder bin ich total auf dem Holzweg? Ich vermute mal stark, beides. |
| | | | |
| | | Wenn ich mich nicht irre, wird nach jeden Tastenanschlag im Eingabefeld und nach jeden Mausklick ins Eingabefeld darunter eine Liste angezeigt mit per Pfeiltasten und Maus anwählbaren Einträgen die auf die bisherige Eingabe passen.
Also müssen Klick+Taste aufs/im Eingabefeld ja abgefragt werden um eine darunterliegende Liste (oder man nimmt editierbare Choicebox die ja bereits ne Liste unten dran zu bammeln hat) zu befüllen. Bei Klick oder Tastaturauswahl in der Liste wiederum muss das Eingabefeld mit dem Eintrag befüllt werden.
Um das (alles) zu managen sind imho also mindestens Methoden wie:
+ Control erzeugen + in Frage kommende Einträge zuweisen / entfernen + Control abragen (z.B. in subClassProc) + Control entfernen
notwendig - also ein paar Funktionen die dann eben z.B. in einer Include aufgehoben sein sollten.
Vielleicht kennt Andreas Miethe noch eine einfachere Methode - vlt. gibt es solch Control bereits etwas fertiger.
|
| | | | |
| | 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! |
| | | | |
|
AntwortenThemenoptionen | 8.703 Betrachtungen |
ThemeninformationenDieses Thema hat 7 Teilnehmer: |