Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

sGUI - eine kleine GUI Simulation
Gehe zu Seite Zurück  1, 2, 3, 4, 5 ... 12, 13, 14  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 561
Wohnort: Jüterbog

BeitragVerfasst am: 24.06.2011, 20:09    Titel: Antworten mit Zitat

Code:

type TextRow
 text      as string       'enthält die Zeile
 index     as integer      'Zeilennummer
 prevrow   as TextRow ptr  'Zeiger auf vorhergehende Zeile, 0 wenn 1.Zeile
 nextrow   as TextRow ptr  'Zeiger auf nachfolgende Zeile, 0 wenn letzte Zeile
end type


Code:

Type TextLine
     V_Next          as TextLine Ptr
     V_Prex          as TextLine Ptr
     V_Data          as String
End Type


...naja bis dahin hatten wir fast den gleichen Gedanken ... grinsen
Ich hab dann noch versucht nen Object zu basteln
Und nen Index muß ich mit rein nehmen, da meine Slider beim Scrollen von "draußen" nur eine "Zeilennummer anspringen" kann und keinen Zeiger.
Un diese Sache in ein Zeitproblem: bei jeder Zeilenoperation muß neu durchgezählt werden.... Das muß ich ja jetzt schon berücksichtigen wenn das Ding in die GUI eingebunden wird.

Werd den Code mal näher inspizieren

Danke

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.06.2011, 20:13    Titel: Antworten mit Zitat

Durchlaufen musst du das array bei jedem erzeugen und löschen einer weiteren zeilennummer sowieso, um die aktuelle zeilennummer zu ermitteln.

wenn du die aktuelle zeilennummer wissen willst, würde ich sie zwischenspeichern, und in den entsprechenden move , copy / paste, typing, usw. ständig aktualisieren.

wenn du z.B. zeilen löscht, einfach -1 beim CR/LF +1 .. dann hast du eine simple lösugn, die unheimlich schnell is, im vergleich zum umschreiben aller zeilennummern in der LL wenn eine zeile am anfang oder mittig hinzugefügt oder gelöscht wird.

gleiches prinzip läst sich hier auch auf die textgrösse (len(text)) oder die aktuelle position (cursor) im gesammt-text anwenden.

Du kannst auch eine jumpliste erstellen, welche aus einem linearem Ptr Array besteht.
die vergrösserung des arrays kannst du z.B. zyklisch a x50 oder ähnliches realisieren. das sind dann 200Byte für 50 Zeilen.

wenn du dann springen willst, kannst du einfach per rechnung ptrarray(zeilennummer) = LL-Ptr anfahren.

das erhöht natürlich auch den codeumfang bei der bearbeitung im KeyASCII bereich.

Aber, Multiline-textfields sind, wenn an sie "ordentlich" programmiert, nicht ohne und machen viel aufwand lächeln


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 561
Wohnort: Jüterbog

BeitragVerfasst am: 24.06.2011, 20:25    Titel: Antworten mit Zitat

An die Jumpliste dacht ich auch schon, doch die sollte, wie der Text, auch ala LL gestaltet sein, was zumindest die Suchzyklen drückt.
Bin mir aber nicht sicher ob die dadurch anfallenden Vergleichsoperationen denn Geschwindigkeitsvorteil wieder aufrauchen. Von daher ist nen Array als Jumpliste vorzuziehen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.06.2011, 20:36    Titel: Antworten mit Zitat

Naja... du kannst ein mittelmass annehmen.

quasi eine LL aus Array's ... pro LL z.B. ein array mit 50 Ptr einträge. Dann kannst du z.B. die zeile 200 durch die ausrechnung von zeilennummer \ arraylänge = ll_sprünge rechnen, und musst dann nur 4 sprünge im ll ausführen, anstat 200 und anschliessend mit der reste-rechnung (mod) direkt den eintrag im array anspringen ... kann man natürlich deutlich erhöhen.

aber, es ist eher selten, das mutlilinetexte so gross werden, das derartige sprünge über mehrere hundert LL's nötig werden.

problem beim array ist einfach die grösse. man kann nicht unbeschränkt zeilennumern hinzufügen, udn die (wie auch schon beim text selbst), reallokierung is problematisch.

darum stückeln, und beim anlegen eines neuen array's im LL gleich das kommplete array mit 200 byte erzugen. (ohne redim. Kostet nur massig zeit)

dadurch hast du auch den vorteil, das du beim grosser speicherauslastung nicht das problem bekomen könntest, das dein array nitch mehr expandiert werden kann, wenn das system keinen ausreichend grossen, zusammenhängenden freien speicherbereich mehr zur verfügung stellen kann.

durch die "stückelung" kannst du das meist verhindern, weil kleine zusamenhängende stücke eher frei sind, als grosse.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 561
Wohnort: Jüterbog

BeitragVerfasst am: 24.06.2011, 20:54    Titel: Antworten mit Zitat

... alter Schwede... Ok genug Hausaufgaben!!!
Ich bedank mich mal artig für diese Lehrstunde... lächeln

mfG Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.06.2011, 21:00    Titel: Antworten mit Zitat

Da fällt mir gerade noch auf, das es noch eine vorteil hätte. Und zwar beim löschen grosser absätze. So braucht man nicht das array umständlich über grössere mengen hin umordnen ( z.B. bei 500 zeilen und dem löschen von 200 zeilen) die 300 übrigen nach vorn verschieben, sondern kann gemütlich einfach die erste LL deallocieren, und spart somit das ganze geschiebe.


NP. HF. grinsen


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 561
Wohnort: Jüterbog

BeitragVerfasst am: 24.06.2011, 21:09    Titel: Antworten mit Zitat

Blockoperationen bitte in der nächsten Stunde.... grinsen
erstma sacken lassen.. diss janze hier
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 25.06.2011, 19:50    Titel: Antworten mit Zitat

Sehr hübsche GUI. Hat mir auf Anhieb gefallen. zwinkern

Habe aber gleich eine Frage. Ich möchte eine einfache Linie darstellen in einem Programm was deine sGUI nutzt. Allerdings wird diese Linie "verschoben", wenn ich ein Menü öffne, welches sich direkt über der Linie befindet. So schaut mein Code aus:

Code:
Menu (event,1,0,1,"Hilfe")
Menu (event,1,1,0,"Hilfe        F1")
Menu (event,1,2,1,"Ueber")
Line (200,20)-(200,768)
MenuOn(event)

Do
   event->xSleep(1)

Loop Until event->EXITEVENT

Wie kann ich also ein Linie zeichnen, ohne dass sie "verschoben" wird?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 25.06.2011, 21:58    Titel: Antworten mit Zitat

Kannst du mal einen Screenshot machen? Ich kann mit deinem Beispiel gerade keine LINE-Verschiebung nachbauen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 25.06.2011, 22:12    Titel: Antworten mit Zitat


Oben Links im Bild.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 561
Wohnort: Jüterbog

BeitragVerfasst am: 26.06.2011, 12:18    Titel: Antworten mit Zitat

@Westbeam:
Ich kann es mit deinem Beispiel grad nicht nachvollziehen.
Rein optisch ist es wirklich nen Problem des Menüs, der Hintergrund-Puffer wird an der falschen Position zurückkopiert.

Mal sehen ob ich den Fehler erzwingen kann

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 26.06.2011, 15:00    Titel: Antworten mit Zitat

Okay, wäre toll wenn du das beheben könntest, dann könnte ich auch mein kleines Projekt fertigstellen:

Das ist ein kleiner (Stichwort: klein!) GUI-Designer für deine sGUI. Momentan kann man nur Buttons in das Fenster tun, aber das funktioniert ganz gut. Das erstellte Fenster wird als eine .bas Datei abgespeichert, welche man aus dem Designer heraus starten kann.
Ich hätte eine Bitte: Könntest du vielleicht Labels in deine sGUI integrieren? Also einfache Texte, die man in ein Fenster tut. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 561
Wohnort: Jüterbog

BeitragVerfasst am: 26.06.2011, 17:31    Titel: Antworten mit Zitat

Schaut sehr gut aus Daumen rauf!

Aber mit deinem Beispielcode kann ich den Fehler einfach nicht erzwingen neutral
Ist denn der Fehler auch noch im jetzigen Ausbaustadium vorhanden?
vllcht darf ich ja mal in den Code schauen.
Das mit dem Label werd ich einbauen.
Mache allerdings ab morgen ne kleine Urlaubsreise und schnapp ich mir mal nen Buch und lass den Computer Computer sein grinsen

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 26.06.2011, 17:41    Titel: Antworten mit Zitat

Zitat:
Schaut sehr gut aus Daumen Daumen rauf!

Danke lächeln

Zitat:
Ist denn der Fehler auch noch im jetzigen Ausbaustadium vorhanden?

Durchaus

Zitat:
vllcht darf ich ja mal in den Code schauen.

Ich schick ihn dir gleich per PM. zwinkern

Zitat:
Mache allerdings ab morgen ne kleine Urlaubsreise und schnapp ich mir mal nen Buch und lass den Computer Computer sein grinsen

Im Urlaub ein Buch? Im Urlaub lieg ich ihn der Hängematte und schlürf Cocktails lachen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 561
Wohnort: Jüterbog

BeitragVerfasst am: 08.09.2011, 21:32    Titel: Antworten mit Zitat

... ist jetzt nur mal zu Testzwecken:
(und nein, die "MultiLineTextEingabeUndEditierBox" ist noch nicht mit bei, schlicht wegen Faulheit geschockt)
Da ich das UDT ein wenig umgebaut habe (etliche Bezeichner sind anders) und die
Aufteilung in den Includes etwas anders geworden ist(was mehr ne Geschmacksfrage war)

folgende wesentliche Veränderungen:

1.)
alle Control Includes müssen jetzt mit dem Schlüsselwort "ONCE" includiert werden.
Da einige Controls auch das Includieren anderer erfordert und ich dies ab jetzt in der entsprechenden
.bas erledige. So muß man nicht überlegen, was brauche ich denn noch für Sachen...

2.)
Slider.bas geht jetzt auf in TrackBar.bas und ScrollBar.bas

3.)
ScrollBars enthalten jetzt ihre eigenen Arrows!

4.)
GadgetOn/Sleep/Off ist (via OVERLOAD) auch mit 2 Parametern zu füttern: einem Start- und EndControl
So lassen sich mehrere Controls "en Bloc" manipulieren (Vorraussetzung ist natürlich sie wurden hintereinander "geAdded")

5.)
einfaches Label hinzugefügt.
Syntax:
* AddLabel (event as EventHandle ptr,x as integer,y as integer,txt as string,col as integer=TextColor) as Gadget ptr
und dazu
*SetLabelText (gad as Gadget ptr,txt as string)
*SetLabelColor (gad as Gadget ptr,col as integer)

6.)
*Filerequester enthält nun ein ".." Button fürs Wechseln ins übergeordnete Verzeichnis

(..ach und diese "RenameTheButtonHack" müßte jetzt über Gadgetptr->caption laufen, ist ungetestet)

in Ermangelung einer Projektseite im Portal nun ein wenig Webspace
http://www.muttonhead.homepage.t-online.de/data/sGUI_v0.8.3.5.zip
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 08.09.2011, 21:49    Titel: Antworten mit Zitat

Zitat:
in Ermangelung einer Projektseite im Portal nun ein wenig Webspace

Wie darf man das denn verstehen? Du hast doch eine Projektseite angelegt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 561
Wohnort: Jüterbog

BeitragVerfasst am: 08.09.2011, 22:09    Titel: Antworten mit Zitat

grinsen
Neee MOD.
Eigentlich wollte ich es von meinem Webspace runter haben ,weil ich etwas "aufgeräumt" hatte und sGUI mir fürs Weghauen zu schade war hab ichs einfach in den Downloadbereich des Portals gestellt.
Da nun doch ein paar Veränderungen stattfinden, und ich nicht jedesmal im Portal bei nem kleinen Pieps ne neue Download-Version anbieten will, nun doch wieder mein bescheidener Webspace.
War halt so nicht geplant, es sei denn "man" portiert den Download zu einem Projekt im Portal...

Hmmm... clorophyllosophische Gedanken:

Ich verstehe nen Download als "was solides", da weis man was man hat, halt nen "Jodel-Diplom".

Ein Projekt hingegen sieht heut so aus... und morgen so!!!
grinsen

...

Es geht mir nur darum, gewisse Sachen zu testen (testen lassen), wenn sie funktionieren gehören sie zum Download...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Roland Chastain



Anmeldungsdatum: 05.12.2011
Beiträge: 192
Wohnort: Frankreich

BeitragVerfasst am: 22.04.2012, 20:14    Titel: Antworten mit Zitat

Hallo Freunde !

@Muttonhead

Ich möchte dein sGUI benutzen für mein Schachspiel.
Ich wollte dein Meinung kennen. Hast du Rate mir zu geben ?

Roland
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 561
Wohnort: Jüterbog

BeitragVerfasst am: 22.04.2012, 22:10    Titel: Antworten mit Zitat

Hallo Francis
Wenn der Loop im Modul "E08Z.bas" der "Mainloop" deines Schachprogrammes darstellt, dann sollten sich dein Schachprogramm und sGUI relativ gut verbinden lassen.
Mich würde es freuen lächeln

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Roland Chastain



Anmeldungsdatum: 05.12.2011
Beiträge: 192
Wohnort: Frankreich

BeitragVerfasst am: 23.04.2012, 07:54    Titel: Antworten mit Zitat

Muttonhead hat Folgendes geschrieben:
Wenn der Loop im Modul "E08Z.bas" der "Mainloop" deines Schachprogrammes darstellt, dann sollten sich dein Schachprogramm und sGUI relativ gut verbinden lassen.


Gut ! happy

Ich will beginnen sGUI zu studieren.

Roland
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3, 4, 5 ... 12, 13, 14  Weiter
Seite 4 von 14

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz