[Gelöst] Text aus StringGadget ect. lesen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

[Gelöst] Text aus StringGadget ect. lesen

Beitrag von udg »

Hallo,
Nun habe ich viel versucht, ausprobiert aber komme zu keinem Ergebnis.
Ich habe ein Formular mit StringGadget Feldern, die einfachen Text enthalten. Wenn diese Felder ausgefüllt sind möchte ich den Text-Inhalt mit dem aktivieren einer Checkbox aus den StringGadget's auslesen und alles in ein Editorgadget einfügen lassen sodass ich dann, dieses als Datei später speichern kann. Die Checkbox übernimmt also eine Schalter/Buttonfunktion.

Mein Ansatz:

Code: Alles auswählen

Select Event
  Case #PB_Event_Gadget
      Select EventGadget() 
         Case #CheckBox1
             If EventGadget()= #CheckBox1 
                GetGadgetText(#Gadget1)
                GetGadgetText(#Gadget2)
                GetGadgetText(#Gadget3)
                GetGadgetText(#Gadget4)
                .... ?
Damit lese ich meines Wissens die StringGadget Felder aus. Jedoch weis ich leider nicht wie ich nun weiter verfahren muss diese Inhalte in mein Ziel EditorGadget automatisch einfügen zu lassen.

Das Ziel EditorGadget: in meinem Fall: #Panel1

Mit "SendMessage_(GadgetID(#Panel1),#WM_PASTE,0,0)" funktioniert es nicht, da es in diesem Fall gerade das einfügt, was sich in der Zwischenablage befindet.
Felder die ich versuche auszulesen siehe CODE Schnipsel, werden nicht ausgelesen und mit SendMessage_ Befehl übergeben.

Wie muss ich an die Sache rangehen?

Danke Euch.
Zuletzt geändert von udg am 12.06.2015 16:19, insgesamt 2-mal geändert.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Re: Frage, text aus StringGadget lesen

Beitrag von Pelagio »

Guten Morgen udg,

das ist leichte mit PB Boardmitteln zu erreichen hierzu gibt es die Befehle AddGadgetItem.

Code: Alles auswählen

If OpenWindow(0, 0, 0, 322, 150, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   EditorGadget(0, 8, 8, 306, 133)

   For a = 0 To 10
     AddGadgetItem(0, a, "Zeile " + Str(a))
    Next
   Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
oder SetGadgetText

Code: Alles auswählen

If OpenWindow(0, 0, 0, 322, 150, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   EditorGadget(0, 8, 8, 306, 133)

   For a = 0 To 10
     pValue$ + Str(a) + #LF$
   Next
   SetGadgetText(0, pValue$)
   Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf 
genaueres kannst Du in der Hilfe unter EditGadget nachlesen.
Ich hoffe dies kann Dir weiterhelfen.
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS]. :allright:
matbal
Beiträge: 261
Registriert: 30.03.2011 20:53

Re: Frage, text aus StringGadget lesen

Beitrag von matbal »

@udg

Ist das ein Ausschnitt aus deinem richtigen Code? Es fehlt nämlich eine Variable, der du das Ergebnis von GetGadgetText() zuweist.

Du kannst die zurückgegebenen Strings entweder mit Stringbefehlen zu einem großen String zusammenbauen (mit + zum Zusammenhängen und #CRLF$ für Zeilenumbrüche) und dann den ganzen Text mit einmal setzen.
Du kannst aber auch mit AddGadgetItemText() einzelne Zeilen im Editor hinzufügen.
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: Frage, text aus StringGadget lesen

Beitrag von udg »

Danke euch beiden :allright:

Letzendlich habe ich es selber hinbekommen und so gelöst:

Auszug:

Code: Alles auswählen

Case #CheckBox1
         If EventGadget()= #CheckBox1 
            Eingabetext1$= GetGadgetText(0)
            Eingabetext2$= GetGadgetText(1)
            Eingabetext3$= GetGadgetText(2)
            Eingabetext4$= GetGadgetText(3)
            AddGadgetItem(#Panel1,0,Eingabetext1$+ #CRLF$ + Eingabetext2$+ #CRLF$ + Eingabetext3$+ #CRLF$ + Eingabetext4$,?CP850)
          EndIf
geht einwandfrei

@matbal
jap, Auszug aus dem Projekt wo Du mir schon sehr geholfen hast :praise:
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Antworten