PB IDE Sicht zum Zeilenanfang springen bei "Return"

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: PB IDE Sicht zum Zeilenanfang springen bei "Return"

Beitrag von Sebastian »

Hmm. Ich finde es nicht unbedingt übertrieben, denn hierbei sollten keine Fehler auftreten - das ist schlicht unprofessionell. Ich habe gar keine so langen Zeilen, sondern arbeite nur im Split-Fenster. Darauf möchte ich auch nicht verzichten, denn die zweite Bildschirmhilfe benötige ich nun einmal für die Hilfe und Datenbankprogramme, Browser usw.
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: PB IDE Sicht zum Zeilenanfang springen bei "Return"

Beitrag von STARGÅTE »

Ich habe gar keine so langen Zeilen, sondern arbeite nur im Split-Fenster. Darauf möchte ich auch nicht verzichten, denn die zweite Bildschirmhilfe benötige ich nun einmal für die Hilfe und Datenbankprogramme, Browser usw.
Und das ist in meinen Augen "schlicht unprofessionell".
Als nächstes ist es "unprofessionell" das die ToolBarLeiste keinen Zeilen-Umbruch drin hat, weil jemand sein Fenster auf eine Breite von 400Pixeln schiebt und er deswegen nicht mehr auf das Kompiler-Icons drücken kann >_<.
"professionell" wäre in meinen Augen sich schleunigst einen 2. Bildschirm daneben zu stellen (wie es die meinsten Programmierer haben) und dort die Hilfe und das Browserfester zu verlagern.

Ansonsten kannst du ja mal bei Scintilla nachfragen, vllt gibt es ja auch schon eine Lösung für das Problem.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: PB IDE Sicht zum Zeilenanfang springen bei "Return"

Beitrag von STARGÅTE »

Ich lese gerade:
Scintilla hat geschrieben: These are features I don't like or don't think are important enough to work on. Implementations are welcome from others though.
Mouse wheel panning (press the mouse wheel and then move the mouse) on Windows.
Quelle: http://www.scintilla.org/ScintillaToDo.html

Vermutlich wird deshalb auch die untere Scrollleiste "für unwichtig erklärt" ...

Denn in diesem Zusammenhang wurde das Problem was Danilo angesprochen hat:
Ziehe ich die Scrollbar ganz nach Rechts, um das Ende einer
langen Zeile zu sehen, ist noch lange nicht das Ende in Sicht.
Zitat: "Wont Fix. For performance, Scintilla does not calculate the true width of lines."
Quelle: http://sourceforge.net/tracker/index.ph ... tid=102439
Auch nicht weiter verfolgt.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: PB IDE Sicht zum Zeilenanfang springen bei "Return"

Beitrag von NicTheQuick »

Also wenn ich Pos1 drücke, dann springt der Cursor zum Anfang des ersten Wortes in der Zeile und beim zweiten Druck auf das erste Zeichen in der Zeile und beim dritten Klick wieder zum Anfang des ersten Wortes in der Zeile, usw...

Wenn man also drei mal Pos1 drückt, ist es wie einmal drücken, bloß dass wirklich ganz nach links gescrollt wird.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: PB IDE Sicht zum Zeilenanfang springen bei "Return"

Beitrag von Danilo »

NicTheQuick hat geschrieben:Wenn man also drei mal Pos1 drückt, ist es wie einmal drücken, bloß dass wirklich ganz nach links gescrollt wird.
Also statt nur 'Return' am Zeilenende muß man nun 'Return, Pos1, Pos1, Pos1' drücken? :D

Wenn man #SCI_GOTOPOS auf die erste Position der Zeile (oder einfach 0) anwendet, scrollt der
sichtbare Bereich ganz zum Zeilenanfang. Damit könnte man Sebastians Problem beheben.

Der folgende Code fügt einem ScintillaGadget 2 Zeilen hinzu, setzt den Cursor auf das Ende
der 1. Zeilen (Scintilla-Zeile 0) und scrollt dort hin. Danach wird der Cursor an die 4.Stelle der 2. Zeile gesetzt.
Mit auskommentierter Zeile "; FIX" wird nicht komplett nach Links gescrollt, also so wie es in
der IDE ist.
Setzt man nun kurz den Cursor mit #SCI_GOTOPOS auf den Zeilenanfang oder auf 0, wird
der Zeilenanfang in den sichtbaren Bereich gescrollt.

Code: Alles auswählen

CompilerIf #PB_Compiler_Unicode
    Procedure.i ascString(s.s)
        *p = AllocateMemory(Len(s)+1)
        PokeS(*p,s,Len(s),#PB_Ascii)
        ProcedureReturn *p
    EndProcedure
    Macro pText(_string_)
        ascString(_string_)
    EndMacro
CompilerElse
    Macro pText(_string_)
        (@_string_)
    EndMacro
CompilerEndIf

If OpenWindow(0, 0, 0, 320, 90, "ScintillaGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

    If InitScintilla()
        ScintillaGadget(0, 10, 10, 300, 70, #Null)

        ; Set the initial text to the ScintillaGadget
        txt.s = "    This is a simple ScintillaGadget with text..."
        For i = 0 To 50 : txt + "text..." : Next
        ScintillaSendMessage(0, #SCI_SETTEXT, 0, pTEXT(txt))

        ; Adding a second line of text with linebreak before
        txt = Chr(10) + "    Second Line: "+txt
        ScintillaSendMessage(0, #SCI_APPENDTEXT, Len(txt), pText(txt))
        
        ; Set cursor to end of line 0
        eol = ScintillaSendMessage(0,#SCI_GETLINEENDPOSITION,0)
        ScintillaSendMessage(0,#SCI_GOTOPOS,eol,0)


        ;
        ; set Cursor at position 4 in line 2
        ;
        ;ScintillaSendMessage(0,#SCI_GOTOPOS,eol+1) ; FIX
        ;ScintillaSendMessage(0,#SCI_GOTOPOS,  0)   ; alternate FIX
        ScintillaSendMessage(0,#SCI_GOTOPOS,eol+5)
        
        
        
        
        SetActiveGadget(0)
    EndIf
 
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Eine Möglichkeit den Sichtbarkeitsbereich in der Horizontalen zu verschieben gibt es also mit #SCI_GOTOPOS.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: PB IDE Sicht zum Zeilenanfang springen bei "Return"

Beitrag von Sebastian »

Hmm. Ich verstehe nicht, warum Du dich so angegriffen fühlst, Stargate. Ich hatte jahrelang zwei Bildschirme hier stehen, doch seit ich einen 27-Zoll Bildschirm mit 1080p mein Eigen nennen darf, habe ich den Sinn nicht mehr gesehen. 2x 960 Pixel sind doch vollkommen ausreichend.
In meinen Augen ist es (und bleibt es dann auch) ein Bug, wenn eine Software den Scrollbalken nicht richtig berechnet. Ob es nun nur ein paar wenige Programmierer stört oder nicht - es bleibt ein Bug. Können wir uns darauf einigen?
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: PB IDE Sicht zum Zeilenanfang springen bei "Return"

Beitrag von ts-soft »

Es ist kein Bug, es ist eine Einschränkung des Scintilla Controls. Da kann PureBasic überhaupt nichts für, außer das sie bisher keine
bessere Alternative zu diesem Control gefunden haben.

Egal wie groß mein Bildschirm ist, das Control hat bei mir eine breite von 800 - 900 Pixel auf dem Bildschirm und keine von mir ge-
schriebene Codezeile ist länger, da ich das ansonsten gar nicht auf einmal mit dem Auge erfassen könnte, ohne den Kopf zu be-
wegen. Das Problem tritt also nur bei überlangen Fremdcodes auf. Wer also damit Probleme hat, hat IMHO teilweise auch selber
Schuld.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: PB IDE Sicht zum Zeilenanfang springen bei "Return"

Beitrag von Sebastian »

Hm. Werd sehen, ob ich eine andere Technik finde, meine Konstanten zu benennen, die in der Tat sehr lang sind. Aber ich sehe eben immer, welcher Gadget-Typ, welches Fenster usw sich dahinter befindet...
Eine Konstante sieht dann z.B. so bei mir aus: #Gadget_String_NewStudent_StudentName
Das ist wirklich praktisch, weil ich die einzelnen Gadgets sofort finde und nach dem Schema gut arbeiten kann. Gibt es da einen Tipp, die Bezeichnungen zu verkürzen und dennoch (auch nach einiger Zeit) sofort alle Konstanten bennenen zu können?
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: PB IDE Sicht zum Zeilenanfang springen bei "Return"

Beitrag von ts-soft »

Guck Dir hier im Forum mal die Beiträge z.B. von Danilo oder mir an. Wir fügen selber Umbrüche ein,
da der Text so wesentlich besser zu lesen ist. Und das gilt auch für Code. Der ist leserlicher, wenn,
die Zeilen eben nicht so lang sind.

Strings kann man auch über mehrere Zeilen zusammenfügen, für Konstantennamen wirst Du auch
kürzere Versionen finden, die trotzdem Rückschlüsse ermöglichen. Tabweiten von mehr als 2 em-
pfinde ich auch als schlechter lesbar, aber das ist wohl eine Sache der Gewöhnung. Danilos
Code lasse ich erstmal immer zusammenrücken :mrgreen:

Wirst Dich wohl Umgewöhnen können und dann im Endeffekt vielleicht sogar erfreut über den bes-
ser lesbaren Code sein.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Re: PB IDE Sicht zum Zeilenanfang springen bei "Return"

Beitrag von Sebastian »

Ja. Habe schon verstanden. Ich werde an meiner Konstantenbezeichnung feilen. Das sehe ich wohl ein. Strings kann man teilen, klar. Du sprichst von einem manuellen Umbruch. Wie funktioniert das? Ich dachte immer, PB wäre zeilenorientiert? Ich kenne nur den ":", um zwei Zeilen auf eine zu bringen, aber umgekehrt (dachte ich) geht es nicht?
(Win 11 64-bit, PB 6.04 und 6.10)
Antworten