Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Hamachi deinstallieren
Aufrufe: 58, Antworten: 5
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 187
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 128
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 186, Antworten: 6
Gehe zum ersten neuen Beitrag PC fährt nicht mehr hoch.
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 34, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08.08.2010, 18:34   #1 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard Editfeld mit Enter verlassen

Hi! da bin ich wieder für mein listview-Projekt, welches zum größten Teil ohne Maus bedient werden soll, habe ich eine eine kleine Schleife gebaut die alle möglichen Tastatureingaben abfragt. Gibt der User einen Buchstaben oder eine Ziffer ein, springe ich in eine Proc, die den angefangenen Suchbegriff vollständig aufnehmen soll & nach Enter an die Listview-Suchfunktion übergeben soll.
Mein erster Gedanke war die Inputbox, der ich einfach den ersten Buchstaben des Users als Vogabe mitgab. Leider habe ich keine Möglichkeit gefunden, den Vorgabetext NICHT zu markieren & den Cursor dahinter zu setzen, damit man gleich nahtlos weiterschreiben kann.
Dann hatte ich die Idee, mit "create" ein Editfeld zu bauen (dessen Handle ich ja dann hatte) & den Vorgabe-Text per "sendstring" eintzutragen. Mit "sendstring" deshalb, damit der cursor hinter dem Vorgabetext steht. Das funzt prächtig. Wie Kann ich das Editfeld jetzt dazu überreden, bei Enter wieder die Kontrolle an das Programm zu geben, damit der Inhalt ausgelesen werden kann? Habe dazu ein kleines Programm geschrieben, um besser & schneller testen zu können. Welche Schraube muß ich drehen? Oder ist diese Strategie eine Sackgasse?
Code:
rem testprogram für ein eingabefeld, welches einen vorgabetext enthält, der nahtlos
rem weitergeschrieben werden kann & nach enter ausgelesen wird

declare lx%,ly%,br%,ho%
declare enr&
declare txt$

lx% = 20  'spalte für linke obere ecke
ly% = 50  'zeile für linke ober ecke
br% = 300 'breite des eingabefeldes
ho% = 30  'höhe des eingabefeldes

Window 0,0-%maxx,%maxy 'fenstergröße definieren: x,y der linken oberen ecke - x,y der rechten unteren ecke --> in den variablen %maxx & maxY steht die aktuelle grafikauflösung

proc stxt
' übernimmt denn ersten buchstaben des users in ein editfeld damit der user
' den suchbegriff zuende schreiben kann. parameter: buchstabe, der gedrückt wurde
  parameters b$
  enr& = Create("Edit",%hwnd,"",lx%,ly%,br%,ho%) 'eingabefeld mit startstring erzeugen
  setfocus (enr&)   'eingabefocus auf das eingabefeld setzen
  sendstring(enr&,b$)  'getipptenn buchstaben in das eingabefeld eintragen        
  '#### hier soll nach enter der eingegebne string ausgelesen & weiterverarbeitet werden ###
  return gettext$(enr&)
endproc

Print "Beim Drücken eines Buchstaben von A-Z oder einer Ziffer wird ein Eingabedialog geöffnet"
Print " *******  ESC = Ende  *******"
locate 8,1
While 1    'Schleife für eingabeüberwachung
  WaitScan
  case %Key = 27 : end 'wenn esc gedrückt wird
  
  'wenn der gedrückte buchstabe a-z oder ein umlaut ist:
  if (%Key > 96) and (%Key < 123) or (%Key = 228) or (%Key = 246) or (%Key = 252) 
      Print "Name,Vorname:",
      txt$ = stxt(chr$(%Key))     
      Print "Der Suchbegriff ist:",txt$
      
  'wenn eine ziffer gedrückt wird (0-9):
  elseif (%Key > 47) and (%Key < 58)
      Print "8-stellige Nummer:",
      txt$ = stxt(chr$(%Key)) 'stxt soll den fertigen suchtext zurückgeben    
      Print "Der Suchbegriff ist:",txt$ 'Nummer wird als text weiterverarbeitet
  endif
EndWhile
end
Gruß Jörg
JörgG ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 08.08.2010, 19:41   #2 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Bei einem einfachen Editfeld ist die Entertaste nicht vorgesehen, weil das Feld ja einzeilig ist. Ich denke, da hilft nur Subclassen.
Mit einem Multiedit sollte es aber funktionieren, sofern der Style ES_WANTRETURN gesetzt ist. Notfalls per Control(...) erstellen.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 08.08.2010, 20:02   #3 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

Ok Danke, ich probiers mit einem Mehrzeiler...
Gruß Jörg
JörgG ist offline   Mit Zitat antworten
Alt 08.08.2010, 21:09   #4 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

ES_WANTRETURN funktioniert bei beiden Editfeldern.

Ansonsten kannst du dir auch einen Hotkey definieren, nämlich Enter und abfragen ob der Fokus auf dem Feld ist.
__________________
XProfan-Profi (XProfan X2+XPIA)
http://jacdelad.bplaced.net
http://jacdelad.square7.ch
Jac de Lad ist offline   Mit Zitat antworten
Alt 08.08.2010, 23:08   #5 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

hmm, jetzt habe ich ein Multiedit mit den style ES_WANTRETURN erstellt:
Code:
...
enr&=Control("EDIT","",1409355780,lx%,ly%,br%,ho%,%HWND,0,%hinstance,0)
  setfocus (enr&)   'eingabefocus auf das eingabefeld setzen
  sendstring(enr&,b$)  'getipptenn buchstaben in das eingabefeld eintragen 
      while 1
        waitinput
        if %key = 13
            '#### hier soll nach enter der eingegebne string ausgelesen & weiterverarbeitet werden ###
             break
        endif
      endwhile
   return gettext$(enr&)
endproc
Die 1409355780 habe ich durch ROC rausgekriegt
Aber auch hier wird das Editfeld nicht nach Enter verlassen. Und solange ich im Editfeld bin, kann ich ja nichts auswerten oder irgendwelche Messages. Nur wenn ich mit der Maus ins Hauptfenster klicke & danach Enter drücke, wird der Suchbegriff zurückgegeben.
Gruß Jörg
JörgG ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 09.08.2010, 00:41   #6 (Direktlink)
Stammuser
 
Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
Standard

Vielleicht so etwas mit BlindEdit?
Code:
Declare text$
cls

var BE_dlg&=create("Dialog",%hwnd,"   Datenblatt",240,26,720,630)
var mgl2&=Create("Edit",BE_dlg&,"",140,70,140,22)
var mgl3&=Create("Edit",BE_dlg&,"",0,0,0,0)
SetFocus(mgl2&)
while 1
WaitInput
case %key=2:BREAK
if GetFocus(mgl3&)
text$=GetText$(mgl2&)
MessageBox text$+"\\nnsoll ich suchen?","Daten",$40040
SetFocus(mgl2&)
endif
Wend
End
Gruß Thomas

Geändert von THFR (09.08.2010 um 01:46 Uhr)
THFR ist offline   Mit Zitat antworten
Alt 09.08.2010, 02:36   #7 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

Hi Thomas, genial! ich bau das morgen (oder nachher) in mein prog ein. Muß ich etwas umformen...
Der Test (wie du ihn gebaut hast, funktioniert) Ich mußte nur das "var" entfernen & die entsprechenden Variablen declarieren. Mein xProfan8a wollte da nicht mitspielen.
Was genau bewirkt denn
Code:
mgl3&=Create("Edit",BE_dlg&,"",0,0,0,0)
eigentlich genau? Du setzt den focus auf mgl2& und fragst dann, ob mgl3 den focus hat; und komischerweise hat mgl3& ihn ja tatsächlich Wie funktioniert das? Da wär ich so nie drauf gekommen. Wie gesagt, bis gleich, bin hundemüde - und Danke ans Forum
Gruß Jörg
JörgG ist offline   Mit Zitat antworten
Alt 09.08.2010, 03:06   #8 (Direktlink)
Stammuser
 
Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
Standard

Jörg, wenn du mehrere EDIT hintereinander erstellst, werden sie in der erstellten Reihenfolge nach ENTER angesprungen. Hier nun zu diesem Abfragezweck ein "BLIND EDIT", d.h. Lage 0,0 und Größe 0,0 dann ist es nicht zu sehen und eine Eigabe ist auch nicht möglich, aber du kannst es abfragen da es nach ENTER , hier nach mgl2&, den Focus bekommt. An XProfan 8 denke ich beim nächsten Mal.

Gruß Thomas
THFR ist offline   Mit Zitat antworten
Alt 09.08.2010, 19:22   #9 (Direktlink)
Stammuser
 
Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
Standard

Ich glaube in allen createWindow oder Createdialog geht es auch ohne Klimmzüge. Beim Haupfenster nur mit Windowstyle 520 , dann kann das Fenster aber in der Größe nicht verändert werden.
Code:
Declare text$,BE_dlg&,mgl2&,lastid%,id_2%

'' So ...
Windowstyle 520
Window 100,100 - 600,600
mgl2&=CreateEdit(%hwnd,"",140,70,140,22)
''~~~~~~~~~~~~~~~~~~~
'' oder so...
'BE_dlg&=createWindow(%hwnd,"   Datenblatt",240,26,720,630)
'mgl2&=CreateEdit(BE_Dlg&,"",140,70,140,22)
''~~~~~~~~~~~~~~~~~~~
id_2% = itemid(mgl2&)
 
SetFocus(mgl2&)
while 1
lastid% = %itemid
WaitInput
case %key=2:BREAK
if (%key = 13) and (lastid% = id_2%)'
text$=GetText$(mgl2&)
MessageBox text$,"Diese Daten suchen",$40040
SetFocus(mgl2&)
elseif %KEY=4   'Verkleinern/Vergrössern wurde angeklickt
SetFocus(mgl2&)
endif
Wend
End
Gruß Thomas
THFR ist offline   Mit Zitat antworten
Alt 10.08.2010, 00:43   #10 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

Hi Thomas, die Variante mit dem BlindEdit funktioniert gut. Deine 2. Lösung konnte ich leider nicht ausführen (Funktion itemid() gibt es in xProf8a noch nicht) Vllt. sollte ich doch mal auf eine höhere Vers. wechseln..
Hast du mit der Sortierung schon einige Erfahrungen gemacht? Bei meiner Sortierung werden komischerweise die Umlaute nicht vernünftig sortiert. Die sind iwie alle verstreut...
also bis dann
Gruß Jörg
JörgG ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 10.08.2010, 01:36   #11 (Direktlink)
Stammuser
 
Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
Standard

Hallo Jörg,
das mit dem @ItemId() war in der XPrafan11 Hilfe mit "ab Profan7" gekennzeichnet. In der Hilfe von XProfan8 konnte ich es auch nicht finden.
Versuch es eimal ohne.
Die Sortierung, Hinweis in der Hilfe suchen, geht glaube ich nach dem ANSI/ASCII-Code. Also A..a..Ä..ä.
Hier könnte nur der Umweg über eine dbf gehen. CSV zur dbf. Dbf mit Index und Satzweise in das unsortierte Listview. Nur mit dBaseIII plus getestet. Da kommt Äb...ac..Ad..äf.
Gruß Thomas

Geändert von THFR (10.08.2010 um 02:06 Uhr)
THFR ist offline   Mit Zitat antworten
Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Text in Editfeld einfügen Jac de Lad XProfan 7 28.02.2009 15:01
F1 Enter to resueme Rolf Windows 95/98/ME/2000/NT 2 17.03.2004 19:33



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:11 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2