String Gadget

Für allgemeine Fragen zur Programmierung mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ich vermute mal, mit programmierstil meint er die art des zugriffs, die anscheinend nur unter XP funktioniert.

ansonsten kann ich in deinem code keine stilschwächen entdecken.

my opinion. stilfragen sind immer so ne sache...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Quaxi hat geschrieben:Nun danke erstmals für die ganzen Antworten, aber es funzt trozdem noch nicht richitg:

So deklariere ich das String-Gadget:
StringGadget(#txt_protokoll, 170, 20, 380, 325, "", #PB_String_ReadOnly | #PB_String_MultiLine | #WS_VSCROLL | #ES_AUTOVSCROLL )

Und mit folgendem Code schreibe ich eine neue Zeile hinein:

Code: Alles auswählen

Procedure myProc_AddLineToProtocoll(str_LineToAdd.s)  ;Funktion die einen Eintrag in die Protokoll Liste durchführt
  SetGadgetText(#txt_protokoll, GetGadgetText(#txt_protokoll) + Chr(13) + Chr(10)+ "--> " + str_LineToAdd)
EndProcedure
Nachdem diesese Procedur aufgerufen wurde und die Zeile hinzugefügt wurde scrollt das String Gadgte allerdings nicht mit.

Code: Alles auswählen

Procedure myProc_AddLineToProtocoll(str_LineToAdd.s)  ;Funktion die einen Eintrag in die Protokoll Liste durchführt
  SetGadgetText(#txt_protokoll, GetGadgetText(#txt_protokoll) + Chr(13) + Chr(10)+ "--> " + str_LineToAdd)
  SendMessage_(GadgetID(#txt_protokoll),#EM_LINESCROLL,0,SendMessage_(GadgetID(#txt_protokoll),#EM_GETLINECOUNT,0,0))
EndProcedure
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

DarkDragon hat geschrieben:
GPI hat geschrieben:UND LÖSCH BITTE DAS BEISPIEL OBEN AUS DEINER SAMMLUNG. Es ist ein sehr schlechter Programmierstiel.
Warum soll das ein schlechter Programmierstiel sein? So ist alles bei mir aufgebaut.
Weil man es so nicht machen sollte. Es funktioniert bei XP. Aber es funktioniert nicht bei Win9x und ob es noch bei Longhorn funktioniert ist auch fraglich. Besser:

Code: Alles auswählen

Procedure EditorGadgetEnableTextWarp(Id); - Activate the automatic word-warp for a EditorGadget
  GID=GadgetID(Id)
  dc=GetWindowDC_(GID)
  SendMessage_(GID, #EM_SETTARGETDEVICE ,dc ,-1)
  ReleaseDC_(GID,dc)
EndProcedure
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Quaxi
Beiträge: 66
Registriert: 11.09.2004 12:42

Beitrag von Quaxi »

Tausen dank Deeem, jetzt funktioniert es.
Aber den Befehl musst du mir jetzt erklären :-)
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Was heißt hier muss? Gut dich einfach 'n bisl bei http://msdn.microsoft.com/ um. (musst du eh irgendwann machen wenn du unter Windows proggen willst..)
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

GPI hat geschrieben:
DarkDragon hat geschrieben:
GPI hat geschrieben:UND LÖSCH BITTE DAS BEISPIEL OBEN AUS DEINER SAMMLUNG. Es ist ein sehr schlechter Programmierstiel.
Warum soll das ein schlechter Programmierstiel sein? So ist alles bei mir aufgebaut.
Weil man es so nicht machen sollte. Es funktioniert bei XP. Aber es funktioniert nicht bei Win9x und ob es noch bei Longhorn funktioniert ist auch fraglich. Besser:

Code: Alles auswählen

Procedure EditorGadgetEnableTextWarp(Id); - Activate the automatic word-warp for a EditorGadget
  GID=GadgetID(Id)
  dc=GetWindowDC_(GID)
  SendMessage_(GID, #EM_SETTARGETDEVICE ,dc ,-1)
  ReleaseDC_(GID,dc)
EndProcedure
Also erstens braucht er nur einen MultiLine StringGadget mit Scrollbalken und keinen EditorGadget mit word-wrap, der eh nicht funktioniert. WordWrap heißt für mich Zeilenumbruch, sobald ein Wort die Maximal X Position überschreitet.
Und ein schlechter Programmierstil wäre z.B. sowas:

Code: Alles auswählen

OpenConsole()
If t=0 And o=0
PrintN("blubb")
Select m
Case o
PrintN("o")
Case t
For k=0 To 10
PrintN("t"+Str(k))
Next
EndSelect
EndIf
Also keine Kommentare, keine Einrückung, keine Aussagekraft.
Für dich ist dann sowas wie Unkompatibilität schlechter Programmierstil.

[EDIT] gut dann mach du erstmal jaPBe für Linux.
Ich hab kein Win9x, woher soll ich denn wissen was wo kompatibel ist? In der MSDN schau ich sicher nicht nach, wenns bei mir schon immer so geklappt hat.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten