Inputbox (Auswahl) ohne Enter drücken

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Reginald
****
Beiträge: 114
Registriert: Fr, 23.07.2010 23:58

Inputbox (Auswahl) ohne Enter drücken

Beitrag von Reginald »

Hallo,

ich will eine Art inputbox haben wo - zum Beispiel - steht:

Wählen Sie
1 - für blaues Auto
2 - für Waschmaschine
3 - für Schokoladentafel


Bei der Inputbox muß ich ja immer noch Enter drücken anschließend. Das ist zu umständlich. Es muß schnell gehen. Ein Tastendruck und nicht mehr.

Ideen?

Ich arbeite mich gerade in OOBasic ein, und unten ein Testmakro dazu. Habe ein spezielles Problem, das ich lösen muß.

Grüße
Reginald

Code: Alles auswählen

Antwort = inputbox("Wählen Sie aus      1 für ja,   2 für nein   oder   3 vielleicht")
'msgbox Antwort
iAntwort = CInt(Antwort)

Select Case iAntwort
	Case 1
		msgbox ("Jetzt tritt Fall 1 auf")
	Case 2
		msgbox ("Jetzt Fall 2")
	Case 3
		msgbox ("Jetzt Fall 3")
End Select
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Inputbox (Auswahl) ohne Enter drücken

Beitrag von Frieder D. »

Hallo Reginald

Das kannst du mit einem Dialog erreichen.
Der Dialog enthält ein Beschriftungsfeld, wo du Text anzeigen lassen kannst,
und ein Textfeld.
Zuerst musst du den Dialog Initialisieren und starten.
Das Textfeld ist mit dem Ereignis " Text modifiziert " mit einem Makro verknüpft, dass die Textbox ausließt, und den Dialog beendet.3

Code: Alles auswählen

Global oDlg1 As object 'Globale variable für Dialog
Sub start_Dialog1 
  DialogLibraries.LoadLibrary("Standard") 'Dialog Bibliothek einbinden
  oDlg1=CreateUnoDialog(DialogLibraries.Standard.Dialog1) 'dialog holen
  'Anzeige-Text Setzen
  oDlg1.getControl("Label1").setText ("Wählen Sie aus "& Chr(10) & _
                                      "1 für ja,   2 für nein   oder   3 vielleicht" )

  on error resume next
  'dialog Ausführen
  oDlg1.Execute(True)
End Sub
'------------------------------------
Sub Get_Textfild_Text 
dim sVal As String
  oDlg1.EndExecute 'dialg beenden
  sVal= oDlg1.getControl("TextField1").getText 'Text aus textfeld holen
  Select Case sVal
   Case 1
      msgbox ("Jetzt tritt Fall 1 auf")
   Case 2
      msgbox ("Jetzt Fall 2")
   Case 3
      msgbox ("Jetzt Fall 3")
   Case Else
     start_Dialog1 'dialog erneut starten, falls falsche auswahl genommen wurde
  End Select
end Sub
Du kannst das selbe aber auch mit einer simplen MsgBox erreichen:

Code: Alles auswählen

sub Test_MsgBox
Dim nVal as Integer
  nVal =MsgBox ("Bitte wählen" ,3,"Auswahl")
  Select Case nVal
    Case 6
      MsgBox "Es wurde Ja gedrückt"
    Case 7
      MsgBox "Es wurde Nein gedrückt"
    Case 2
      MsgBox "Es wurde Abbrechen gedrückt" 
  End Select  
end sub
Ich habe dir hier mahl eine Beispieldatei erstellt:
Dialog_Beispiel.ods
(11.45 KiB) 122-mal heruntergeladen
Gruß Frieder
hr.hartwig
***
Beiträge: 52
Registriert: Mi, 09.05.2007 23:25

Re: Inputbox (Auswahl) ohne Enter drücken

Beitrag von hr.hartwig »

Hallo!
Wenn es nicht unbedingt eine Inputbox sein muß,
würden sich da nicht besser Optionbuttons eignen?
(Siehe Anhang.)
Viele Grüße,
Hotti
Dateianhänge
Optionbutton_Auswahl.ods
(11.88 KiB) 98-mal heruntergeladen
Reginald
****
Beiträge: 114
Registriert: Fr, 23.07.2010 23:58

Re: Inputbox (Auswahl) ohne Enter drücken

Beitrag von Reginald »

Hallo Frieder und Hotti,

vielen Dank für die Antworten!

Der Dialog von Frieder gefällt mir am besten. Ich weise das Makro einem Tastaturbefehl zu, z. B. Strg + D und kann dann mit einem Tastendruck (1, 2, 3) auswählen. Das ist der effektiveste und schnellste Weg - mittels Tastatur.

Man klickt sich mit der Maus (rechte Hand) durch eine Tabelle durch und macht mit der Tastatur (linke Hand) die Auswahlen.

Muß schnell gehen. Das ist das Kriterium.

Eine Frage bleibt noch: Wenn ich deine Beispieldatei verwende, klappt es. Wenn ich den Code in eine Datei von mir kopiere, meckert er in der Zeile oDlg1=CreateUnoDialog(DialogLibraries.Standard.Dialog1) mit "BASIC runtime error. Property or method not found: Dialog1"

Was ist dieses "Dialog1" Teil? Habe das nirgens gefunden.


Grüße,
Reginald
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Inputbox (Auswahl) ohne Enter drücken

Beitrag von balu »

Hallo Reginald,
Wenn ich deine Beispieldatei verwende, klappt es.
Ist ja auch logisch, da alles vorhanden ist was vorhanden sein muss.

Wenn ich den Code in eine Datei von mir kopiere, meckert er in der Zeile ...
Auch das ist logisch, denn Du übersiehst da etwas.

Was ist dieses "Dialog1" Teil? Habe das nirgens gefunden.
Sorry, aber mach mal deine Augen auf (net bös gemeint)!
Wenn Du in der IDE bist, also dort wo man den Code eintippt, dann siehst Du in der Beispieldatei nicht nur das Makro im "Module1", sondern auch noch einen Reiter mit dem Namen "Dialog1". Und genau dieser Dialog fehlt dir in deiner eigenen Datei. Du musst jetzt in deiner Datei einen eigenen Dialog erstellen, rechtsklick auf den Reiter wo dein Makrocode sich befindet und dann
-> Einfügen
---> Baic Dialog
auswählen. Nun musst Du die einzelnen Elemente in deinem eigenen Dialog erstellen.

Oder aber eine simplere Art.
In der Beispieldatei den Dialog exportieren, und in deiner Datei dann wiederum importieren. Die dazu nötigen Button findest Du in der Symbolleiste.

Hilft dir das jetzt schon mal etwas weiter?



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Antworten