AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi eingabe- oder buchstabenbreite herrausfinden
Thema durchsuchen
Ansicht
Themen-Optionen

eingabe- oder buchstabenbreite herrausfinden

Ein Thema von teetasse · begonnen am 19. Mai 2009 · letzter Beitrag vom 21. Mai 2009
Antwort Antwort
teetasse

Registriert seit: 19. Mai 2009
4 Beiträge
 
Delphi 7 Personal
 
#1

eingabe- oder buchstabenbreite herrausfinden

  Alt 19. Mai 2009, 14:31
hi,

es geht sich um folgendes:

ich muss ein programm schreiben, welches die proteinbiosynthese simuliert und veranschaulicht, was das genau ist, ist irrelvant.
der benutzer gibt also eine eingabe (DNA) ein, diese soll dann mit einer datei verglichen werden und zwei ausgaben (mRNA und Aminosäure) erfolgen.
allerdings möchte ich noch ein paar grafische extras einbauen:
die eingabe wird in ein Panel geschrieben und über dieses panel läuft ein gelber kreis.
da die eingabe vom programm in 'päckchen' a 3 buchstaben verpackt werden muss, hätte ich gerne, dass wenn der kreis über das erste päckchen (DNA) gelaufen ist, das erste päckchen der mRNA ausgegeben wird.
hierzu ist es nötig, entweder a) zu wissen, wie breit jeder buchstabe (ich benutze courier) oder b) wie breit die gesammte eingabe ist, und das bekomme ich einfach nicht raus .
gibt es dafür eine funktion in delphi oder kann mir jemand sagen, wie breit ein buchstabe in delphi in courier ist?

für antworten wäre ich sehr dankbar,
mfg, teetasse
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#2

Re: eingabe- oder buchstabenbreite herrausfinden

  Alt 19. Mai 2009, 14:37
Am bequemsten geht das wohl über die DrawText-Funktion aus der Unit Windows. Die kennt einen Parameter namens DC_CALCRECT der die Abmessungen des Textes in einem als Parameter übergebenen TRect zurückliefert. Zusätzlich kann man noch eine Reihe weiterer Parameter angeben, schau einfach mal in die Doku dazu.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#3

Re: eingabe- oder buchstabenbreite herrausfinden

  Alt 19. Mai 2009, 14:40
Alternativ fällt mir dazu ein: Du kannst von deinem Form das "Canvas" und dann dessen Methode "TextWidth" benutzen, um das rauszufinden.

Also z.B.:

Delphi-Quellcode:
procedure TForm1.MachIrgendwas;

var oldFont: TFont;
    myWidth: integer;

begin
  // die bisherige Schrift sichern, um nix kaputt zu machen...
  oldFont:=canvas.Font;
  
  // Die richtige Schrift, die gemessen werden soll...
  canvas.Font.Name:='Courier';
  canvas.Font.Size:=12;
  
  // Ausmessen...
  myWidth:=Canvas.TextWidth('Hiervon will ich die Breite...');

  // Schrift zurücksetzen...
  Canvas.Font:=oldFont;

  // Und hier mach ich dann mit der Erkenntnis von myWidth irgendwas...
  [...]

end;
Ungetestet, aber ich bin optimistisch...

Bis denn
Bommel
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#4

Re: eingabe- oder buchstabenbreite herrausfinden

  Alt 19. Mai 2009, 14:47
Nachtrag: Hab übersehen, dass TFont ja nicht kopiert wird. Damit das klappt, müsstest du dir also Font.Name und Font.Size in jeweils eine eigene Variable sichern, bei meinem Beispiel entsteht nur ein Zeiger auf das TFont-Objekt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#5

Re: eingabe- oder buchstabenbreite herrausfinden

  Alt 19. Mai 2009, 14:51
oder siehe auch TextWidthTextWidth
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#6

Re: eingabe- oder buchstabenbreite herrausfinden

  Alt 20. Mai 2009, 22:47
Funktioniert TextWidth eigentlich auch mit Widestrings? Ich habe nämlich genau wegen dieser Problematik damals die Methode mit DrawText bzw. DrawTextW implementiert (allerdings ohne damals TextWidth bewusst ignoriert zu haben)...
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#7

Re: eingabe- oder buchstabenbreite herrausfinden

  Alt 21. Mai 2009, 07:57
Nein, wenn ich mich recht entsinne, funktionierte das vor D2009 nicht mit Widestrings, da hast du recht. In meiner Vor-D2009-Zeit hatte ich deswegen auch extra WideTextWidth (ich glaube, so hieß das) aus den TNT-Komponenten benutzen müssen. Jetzt in D2009 funktioniert es dann natürlich schon.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz