Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: width= Draw Text Get

width= Draw Text Get 2 Jahre 3 Monate her #5265

  • lorglas
  • OFFLINE
  • Moderator
  • Beiträge: 218
  • Punkte: 26390
  • Karma: 0
  • Honor Medal Gold Honar Medal Silver Honor Medal Bronze
Hallo zusammen,

der nächste Fehler der mir aufgefallen ist.
Die ermittelte Länge mit Draw text get stimmt nicht überein.

Siehe Screenshot
Die erste Linie zeigt die Linie mit der ermittelten Länge, die zweite zeigt die korrektierte Linie.

Siehe Code:
sub OpenWindow()
window open 100,100 to 600,500, "MainWindow", "Main Window"
Draw text 10,10, "Benennung", "MainWindow"
Width = DRAW GET "Text-Width", "Benennung", "MainWindow"
DRAW LINE 10,30 TO Width,30, "MainWindow"
// Korrektur Linie
DRAW LINE 10,50 TO Width+8,50, "MainWindow"
return
end sub

Wenn man die ermittelte Länge für eine Bezeichnung einer Spalte von einer Columnbox nutzen möchte, so muss man sogar 14 Pixel hinzu addieren.

Das ganze beruht jetzt auf den Standart System Font, ohne eine Veränderung.

Gruß lorglas
Anhang:
Letzte Änderung: 2 Jahre 3 Monate her von lorglas.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: width= Draw Text Get 2 Jahre 3 Monate her #5266

  • chaotic
  • OFFLINE
  • Expert Boarder
  • Beiträge: 85
  • Punkte: 3000
  • Karma: 0
  • Honor Medal Gold Honar Medal Silver Honor Medal Bronze
Hi lorglas,

habe mir das Ganze eben mal angesehen. Die Funktion "DRAW GET" liefert einwandfreie Werte, allerdings mußt Du beim Zeichnen der Linie den Anfangswert (10) zu der ermittelten Länge dazurechnen. Danach hat die Linie auch die richtige Länge. Habe Deine Sub- Routine mal ein wenig modifiziert und angehängt. So sollte es jetzt funktionieren.

Viel Spaß, chaotic


sub OpenWindow()

local st$
local xp

// das ist Dein String für den Text, dann muß man ihn nicht immer an mehreren
// Stellen ändern
st$ = "das funktioniert auch mit ein wenig längeren Texten"

// das ist die Startposition für die Linie
xp = 10

window open 100, 100 to 600, 500, "MainWindow", "Main Window"
Draw text xp, 10, st$, "MainWindow"

Width = DRAW GET "Text-Width", st$, "MainWindow"

// diese Linie hat jetzt die richtige Länge
DRAW LINE xp, 30 TO xp + Width, 30, "MainWindow"

// Korrektur Linie
DRAW LINE 10,50 TO Width+8,50, "MainWindow"

return

end sub
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: width= Draw Text Get 2 Jahre 3 Monate her #5267

  • lorglas
  • OFFLINE
  • Moderator
  • Beiträge: 218
  • Punkte: 26390
  • Karma: 0
  • Honor Medal Gold Honar Medal Silver Honor Medal Bronze
Hallo Chaotic,

danke für die Antwort. Meine Sub sind hier meistens Quick and Dirty programmiert. Ich hatte vergessen die Startposition dazu zu addieren, dennoch bleibt das zweite Problem bei der Columnbox.
Da gibst du ja Maxwidth, Minwidth, witdh an.

Das kann ja eigentlich nicht sein das man dann width+14 rechnen muss, damit man die richtige Breite bekommt.

Gruß Lorglas
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: width= Draw Text Get 2 Jahre 3 Monate her #5268

  • chaotic
  • OFFLINE
  • Expert Boarder
  • Beiträge: 85
  • Punkte: 3000
  • Karma: 0
  • Honor Medal Gold Honar Medal Silver Honor Medal Bronze
Hi lorglas,

doch, das kann sein (leider). Die Pixel- Breite für die Columnbox gilt für die Spalte, nicht für den Text welchen Du dort rein schreibst. Das heißt, bei den Spalten- Überschriften werden immer 7 Pixel vor und 7 Pixel nach dem eigentlichen Text eingefügt. Sonst würde der Text mit der Begrenzung der Spalten beginnen und abschließen, was bei mehreren Spalten sehr unübersichtlich wäre. Die 14 Pixel mußt Du bei der Definition der Spaltenbreite berücksichtigen.

Ich hab Dir mal ein Bild, zum besseren Verständnis, mit angehängt.

Gruß chaotic
Anhang:
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Ladezeit der Seite: 0.286 Sekunden

Zusätzliche Informationen