Scroll und editierbares Textfeld in blitz 3d???

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Moses

Betreff: Scroll und editierbares Textfeld in blitz 3d???

BeitragDo, Nov 25, 2004 1:12
Antworten mit Zitat
Benutzer-Profile anzeigen
ok brauch ich dafür jetzt zwingend ne komplette gui???

das dingens soll ungefähr so sein:

Code: [AUSKLAPPEN]

;---------------------------------------------------
; Textbox - macht aus einem string eine Textbox
;           definierter Grösse ( x und y sind
;           pixelangaben für die linke obere Ecke,
;           w die breite in Zeichen und
;           h anzahl der zeilen)
;---------------------------------------------------

Function textbox(x%,y%,w%,h%,boxtext$)
.
.
.
End Function


ok das ist jetzt nur für nen font gut wo alle zeichen gleich breit sind ... besser währe natürlich mit w und h die box pixelgenau abstecken zu können

meine idee für ein uneditierbares nicht scrollbares textfeld:
man schreibe alle 'wörter' aus boxtext$, wobei wörter durch 1-n lehrzeichen oder "-" unterteilt werden, in eine liste und füge diese wörter zu h zeilen der breite w wieder zusammen...

überlegungen:
wenn ein wort länger als w ist ... abhacken und rest auf die nächste zeile verschieben
wenn ein bestimmtes zeichen auftauch ... zeilenumbruch
wenn ein wort mit einem oder meheren lehrzeicheb beginnt und den anfang einer zeile bilden soll ... 1. lehrzeichen weglassen in der ausgabe
ist boxtext länger als es die anzeige durch w und h definiert zulässt ... letzten 3 zeichen der letzten zeile durch "..." ersetzen

zum thema editieren und scrollen hab ich keinen plan wie ich das erstmal angehen und auch resurcen schonend machen könnte...


... vieleicht haben ja hier einige schon sowas in ihrer gui oder sonst irgenwie mal gemacht und ich brauch das rad nicht ein zweites mal erfinden oder können mal schreiben wie man es geschickt angehen könnte Confused
  • Zuletzt bearbeitet von Moses am Do, Nov 25, 2004 20:10, insgesamt 2-mal bearbeitet
 

Moses

BeitragDo, Nov 25, 2004 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
*nochmalhochrück*

D2006

Administrator

BeitragDo, Nov 25, 2004 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

mit der Funktion Mid$() kannst du jedes Zeichen eines Strings durchgehen.
Mit Stringwidth() kannst du gucken, ob der String mit dem aktuellen Font länger ist als w. Wenn das der Fall ist, schneidest du alles beim letzten Leerzeichen (was du dir am besten merkst) ab. Falls kein Leerzeichen da ist (btw: Leerzeichen hat den ASCII Code 32) hackst du es einfach so ab.
Mit Fontheight weißt du wie hoch dein Text ist. Wenn du also bemerkst, dass deine Position plus Fontheight (also nächste Zeile) größer ist als h, dann machst du die 3 punkte hinten ran.

Es ist machbar. Habe auch Code hier. Kriegst du aber nicht *bätsch*. Wink
Ist aber wirklich nicht schwer.

Viel Glück

MfG
D2006
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

noir

BeitragSo, Nov 28, 2004 15:04
Antworten mit Zitat
Benutzer-Profile anzeigen
ma zu dem thema:

ich hab mir ma für nen chat ne eigene text input box geschrieben, da ich bb 2d hab und nicht bb plus und keine lust hatte ne ganze fertige gui einzubinden.

ich hab eigentlich alles hinbekommen:

text eingabe, zeichen löschen, zeichen an beliebiger stelle einfügen, scrollen links rechts mit pfeiltasten, end, pos1 funktion ...

nur mit dem cursur hab ich das nicht gescheit hinbekommen:
ich hab halt mit fontwidth ermittelt umwie weit der cursor nach links oder rechts muss. es geht auch nur das der cursor bei manchen buchstaben halt dummerweise genau auf dem zeichen ist z.b bei I, aber einfach z.b immer 0.1 zum abstand dazu geht natürlich auch nicht, weil sich das dann nach der zeit addiert und dann gar nicht mehr passend ist.
die einzige möglichkeit wäre halt, dass ich halt festlege für jeden buchstaben um wieviel ich den curso verschieben müsste, was aber ne ziemlich nervige arbeit wäre.

Very Happy interessiert warscheinlich keinen, aber habs trotzdem ma geschrieben

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group