AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GetTextAlign TA_LEFT=TA_TOP?

Ein Thema von Bomberbb · begonnen am 14. Jul 2011 · letzter Beitrag vom 14. Jul 2011
Antwort Antwort
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#1

GetTextAlign TA_LEFT=TA_TOP?

  Alt 14. Jul 2011, 11:24
Irgendwie hab ich nich ganz geschnallt, wie bekomme ich die Textausrichtungen raus? Ich hab folgende Funktion:

Code:
function inTextAlign(inValue:Byte):Byte;
Begin
  Result:=ord(fOwner.fTextalign and inValue = inValue);
End;
Nun hat aber doch TA_LEFT den gleichen Wert wie TA_TOP, dementsprechend kann meine Funtion so nicht funktionieren.
Muss ich alle andern Konstanten der Ausrichtung abfragen und kann dann erst auf die Ausrichtung schließen?

Keine Ahnung warum TA_LEFT=TA_TOP???

Mit Hoffe auf Hilfe

BBB

edit:
kann ich das nur so lösen?
Code:
  Function inTextAlignV(inValue: Byte): Byte;
  Begin
    If inValue = TA_TOP Then
      Result := ord((fOwner.fTextalign And TA_BOTTOM <> TA_BOTTOM) And (fOwner.fTextalign And TA_BASELINE <> TA_BASELINE))
    Else
      Result := ord(fOwner.fTextalign And inValue = inValue);
  End;

  Function inTextAlignH(inValue: Byte): Byte;
  Begin
    If inValue = TA_LEFT Then
      Result := ord((fOwner.fTextalign And TA_RIGHT <> TA_RIGHT) And (fOwner.fTextalign And TA_CENTER <> TA_CENTER))
    Else
      Result := ord(fOwner.fTextalign And inValue = inValue);
  End;

Geändert von Bomberbb (14. Jul 2011 um 11:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: GetTextAlign TA_LEFT=TA_TOP?

  Alt 14. Jul 2011, 12:13
Ich weiß nicht ob ich Dein Problem so richtig Verstanden habe.
Wenn ich hier und hiereinen Blick darauf werfe und in der Windows.Pas nachschaue
Delphi-Quellcode:

  { Text Alignment Options }
  {$EXTERNALSYM TA_NOUPDATECP}
  TA_NOUPDATECP = 0;
  {$EXTERNALSYM TA_UPDATECP}
  TA_UPDATECP = 1;
  {$EXTERNALSYM TA_LEFT}
  TA_LEFT = 0;
  {$EXTERNALSYM TA_RIGHT}
  TA_RIGHT = 2;
  {$EXTERNALSYM TA_CENTER}
  TA_CENTER = 6;
  {$EXTERNALSYM TA_TOP}
  TA_TOP = 0;
  {$EXTERNALSYM TA_BOTTOM}
  TA_BOTTOM = 8;
  {$EXTERNALSYM TA_BASELINE}
  TA_BASELINE = 24;
  {$EXTERNALSYM TA_RTLREADING}
  TA_RTLREADING = $100;
  {$EXTERNALSYM TA_MASK}
  TA_MASK = (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING);

  {$EXTERNALSYM VTA_BASELINE}
  VTA_BASELINE = TA_BASELINE;
  {$EXTERNALSYM VTA_LEFT}
  VTA_LEFT = TA_BOTTOM;
  {$EXTERNALSYM VTA_RIGHT}
  VTA_RIGHT = TA_TOP;
  {$EXTERNALSYM VTA_CENTER}
  VTA_CENTER = TA_CENTER;
  {$EXTERNALSYM VTA_BOTTOM}
  VTA_BOTTOM = TA_RIGHT;
  {$EXTERNALSYM VTA_TOP}
  VTA_TOP = TA_LEFT;
Dann sollte klar sein das es nur eine Kombination von Textausrichtungen gibt. Also nicht nur TA_Left sondern TA_LEFT und TA_BOTTOM.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#3

AW: GetTextAlign TA_LEFT=TA_TOP?

  Alt 14. Jul 2011, 12:15
Ich weiß ja nicht, wofür du das Ganze brauchst, aber vermutlich würdest du dir leichter tun, wenn du nicht mit den Windows-Konstanten und Bitschubserei arbeiten würdest, sondern z.B. mit TAlignment, TVerticalAlignment und Set-Operationen.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: GetTextAlign TA_LEFT=TA_TOP?

  Alt 14. Jul 2011, 12:23
Das MSDN sagt in der Hilfe zu GetTextAlign:
Zitat von MSDN:
The text-alignment flags are not necessarily single bit flags and may be equal to zero. The flags must be examined in groups of related flags, as shown in the following list.

TA_LEFT, TA_RIGHT, and TA_CENTER
TA_BOTTOM, TA_TOP, and TA_BASELINE
TA_NOUPDATECP and TA_UPDATECP

If the current font has a vertical default base line, the related flags are as shown in the following list.

TA_LEFT, TA_RIGHT, and VTA_BASELINE
TA_BOTTOM, TA_TOP, and VTA_CENTER
TA_NOUPDATECP and TA_UPDATECP
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#5

AW: GetTextAlign TA_LEFT=TA_TOP?

  Alt 14. Jul 2011, 12:23
Das es nur eine Kombinaton gibt, ist mir klar.
aber wenn TA_LEFT = TA_TOP dann kann ich zumindest nicht direkt auf eines der Beiden abfragen, sondern muss die anderen abfragen ausschließen, das kam mir etwas seltsam vor...

Hätte gedacht, dass ich jeden Wert mit Gettextalign and TA_wert = TA_wert abfragen könnte.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: GetTextAlign TA_LEFT=TA_TOP?

  Alt 14. Jul 2011, 12:47
Was ist daran seltsam?
Der Standardfall sollte TopLeft sein also kein Bit gesetzt!
Ist hingegen das zweite Bit gesetzt ist es auf keinen Fall TA_LEFT (es könnte TA_RIGHT oder TA_CENTER sein) Und Ist das vierte bit nicht gesetzt, dann ist es immer noch TA_TOP.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 19:33 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