-

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

Moderator: Moderatoren

Benutzer 48566 gelöscht

-

Beitrag von Benutzer 48566 gelöscht »

----------
Zuletzt geändert von Benutzer 48566 gelöscht am Mi, 26.06.2024 15:13, insgesamt 1-mal geändert.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro zum Befüllen von Textfeldern in BASE

Beitrag von F3K Total »

Hi,
miamit hat geschrieben:Was mache ich falsch?
Vermutlich rufst Du das Makro aus der IDE (Basic-GUI) auf, statt durch Drücken des Buttons? Denn

Code: Alles auswählen

thisComponent
wäre dann nicht das Formular, sondern das gesamte Datenbankdokument, und das hat eben keine Drawpage ...

Angenommen
  • dein Textfeld heißt txtText
  • der Button befindet sich auf dem selben Formular (im Formular Navigator)
  • In die Zusatzinformation (.tag) des Buttons hast Du deinen Einfügetext geschrieben
  • hänge dieses Makro an sein Ereignis Aktion ausführen

Code: Alles auswählen

Sub S_insert_Button_Tag(event)
    ocontroller = thiscomponent.currentcontroller
    obutton = event.source.model
    sTextpiece = oButton.tag
    oform = oButton.parent
    otxtText = oform.getbyname("txtText")
    sText = otxtText.Text
    otxtTextctrl = ocontroller.getcontrol(otxtText)
    osel = otxtTextctrl.Selection
    if osel.min > osel.max then
        nmin = osel.max
        nmax = osel.min
    else
        nmin = osel.min
        nmax = osel.max    
    endif
    if sText = "" then
        snewText = sTextpiece
    else
        stext1 = left(sText,nmin)
        stext2 = right(sText,len(sText)-nmax)
        snewText = stext1 + sTextpiece + stext2
    endif    
    otxtText.Text = snewText
end sub
Gruß R
Benutzer 48566 gelöscht

-

Beitrag von Benutzer 48566 gelöscht »

----------
Zuletzt geändert von Benutzer 48566 gelöscht am Mi, 26.06.2024 15:13, insgesamt 1-mal geändert.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro zum Befüllen von Textfeldern in BASE

Beitrag von F3K Total »

Hi,
miamit hat geschrieben:... heißt definitiv Name_des_Formulars und wenn ich im Entwurfsmodus ...
Hier ist nicht der Name des Formulardokumentes gemeint, sondern der Name, den Du siehst, wenn du im Entwurfsmodus mit dem Formularnavigator schaust, bzw. wenn du einen Rechtsklick auf ein Kontrollelement machst und dann Formular ... wählst.
Gruß R
Benutzer 48566 gelöscht

-

Beitrag von Benutzer 48566 gelöscht »

----------
Zuletzt geändert von Benutzer 48566 gelöscht am Mi, 26.06.2024 15:13, insgesamt 1-mal geändert.
Benutzer 48566 gelöscht

-

Beitrag von Benutzer 48566 gelöscht »

----------
Zuletzt geändert von Benutzer 48566 gelöscht am Mi, 26.06.2024 15:13, insgesamt 1-mal geändert.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro zum Befüllen von Textfeldern in BASE

Beitrag von F3K Total »

miamit hat geschrieben:Kann man das noch realisieren?
Klar kann man!
Und los!
Viel Erfolg
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro zum Befüllen von Textfeldern in BASE

Beitrag von F3K Total »

Hi,
um sicher zu gehen, dass der Textinhalt übernommen wird, schreibe als letzte Zeile

Code: Alles auswählen

otxtText.commit = true
Ich hatte dir schon früher MRI und XRAY nahegelegt, damit kannst Du

Code: Alles auswählen

osel = otxtTextctrl.Selection
analysieren und verwenden um den Cursor dahin zu bekommen, wo du ihn benötigst.
Damit das wirkt, mußt du entweder die Button-Eigenschaft "Fokussieren bei Klick" abschalten, oder durch diese Zeile

Code: Alles auswählen

otxtTextctrl.setfocus
den Fokus zurück auf das Textfeld lenken.
R
Antworten