Inhalt Textfeld markieren

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Pebender

Betreff: Inhalt Textfeld markieren

BeitragDi, Nov 01, 2011 13:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

wie kann ich den Inhalt einer Textbox markieren ??(also so, das er blau hinterlegt ist)
ich möchte, das nach einer Falschmeldung der Fokus in die entsprechende Textbox gesetzt wird, und in dieser halt der falsche Eintrag markiert ist.

Code: [AUSKLAPPEN]
If Int(ar$)>100 Then  'Fehlermeldung wenn der Inhalt größer 100 ist
    AppTitle$="Fehler"  'Überschrift für Meldung
   Notify ("Der Wert kann nicht größer als 100 sein",True) 'Fehlermeldung
    Return
     ActivateGadget(Textfeld1)    'Focus in Textfeld1 setzen
      EndIf


wenn ich mich nicht irre lautet der Befehl für die Textarea : SelectTextAreaText() aber für das Textfeld finde ich nichts.

mfg Peter
BMax & MaxGUI

Midimaster

BeitragDi, Nov 01, 2011 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
*** edit ****

sorry mein fehler....
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Pebender

BeitragDi, Nov 01, 2011 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
hmmm,

da bekomm ich die Fehlermeldung " Identifier "SelectGadgetText" not found.
Ebenso finde ich die Beschreibung nicht in meiner Hilfe.
Oder wird dieser Befehl nicht von der MaxGUI unterstützt ??

mfg Peter
BMax & MaxGUI

Lobby

BeitragDi, Nov 01, 2011 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein kurzer Blick in das win32maxguiex-Modul der maxgui zeigt, dass in der Klasse TWindowsTextField die Methode SetSelection(...) nicht überladen wird (anders hingegen bei der TWindowsTextArea-Klasse). Es scheint also seitens BRL nicht so vorgesehen zu sein, den Text innerhalb Textfelder zu selektieren.
Was das nun für dich bedeuted? Dass Du dir entweder eine Funktion dazu selbst schreiben musst oder aber beispielsweise mit Hilfe einer Textarea ein Textfield vortäuschst.

Für Windows habe ich kurzerhand diese kleine Funktion mit Beispielcode zur Nutzung heruntergeschrieben:
BlitzMax: [AUSKLAPPEN]
SuperStrict
Import maxgui.drivers

Local win:TGadget = CreateWindow("Hello", 0, 0, 400, 300,, WINDOW_DEFAULT | WINDOW_CENTER)
Local tft:TGadget = CreateTextField(10, 10, 300, 20, win)

tft.setText("This is a text")
ActivateGadget(tft)
SelectTextFieldText(tft, 2, 4)

While(True)
WaitEvent()
Local ev:TEvent = CurrentEvent
Select ev.id
Case EVENT_WINDOWCLOSE
Exit
End Select
Wend
win.Free()

Function SelectTextFieldText(tft:TGadget, Pos:Int, Length:Int)
?Win32
Local win:TWindowsGadget = TWindowsGadget(tft)
If win Then
If Length < 0 Length = win.GetText().Length - Pos
win.DeSensitize()
SendMessageW(win._hwnd, EM_SETSEL, Pos, Pos + Length)
win.Sensitize()
End If
?
End Function


Auf Basis des Maxgui-Codes zur Selektion von Text in TextAreas könnte man diese Funktion nun auch noch für MacOS und Linux erweitern...
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

blackgecko

BeitragDi, Nov 01, 2011 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hats dus mal mit ActivateGadget probiert? Bei mir zumindest gehts so.
EDIT: Ach Quatsch...
EDIT2: Äh, doch kein Quatsch, dachte ich hätte mich verlesen.
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.
 

jsp

BeitragMi, Nov 02, 2011 1:08
Antworten mit Zitat
Benutzer-Profile anzeigen
blackgecko hat recht, einfach ActivateGadget()
Logic Gui Professional a Gui Designer for MaxGui

Lobby

BeitragMi, Nov 02, 2011 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, Du willst schlichtweg einfach nur den ganzen Inhalt des Textfeldes markiert haben? Dann funktioniert wie bereits bestätigt die Methode mit ActivateGadget, wobei Du bei deinem Beispielcode das return zu früh gesetzt hast, sodass es dort nicht mehr ausgeführt wird.
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

Pebender

BeitragMi, Nov 02, 2011 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
danke Leute,

ich habe das mit ActivateGadget() probiert, hat nur nicht funktioniert,
und dank Lobby , weiß ich jetzt warum.

also thx nochmal
BMax & MaxGUI

Pebender

Betreff: gelöst

BeitragMi, Nov 02, 2011 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

so jetzt funktioniert es wie ich mir das vorgestellt habe.

thx.
BMax & MaxGUI

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group