![]() |
tabstop rechtsbündig
Hallo,
ich habe folgenden Code:
Delphi-Quellcode:
Ich möchte, dass die Tabstops rechtsbündig sind (also nicht der Text). D.h., wenn man mit der Tab-Taste weitergeht und Text eingibt, verschiebt sich dieser nach links (s. OpenOffice Writer, auf Tabstop doppelt klicken).
procedure TAb_rechtsbuendig();
var pf2: PARAFORMAT2; begin FillChar(pf2, SizeOf(pf2), 0); pf2.cbSize := SizeOf(pf2); pf2.dwMask := PFM_Tabstops; pf2.cTabCount:=5; pf2.rgxTabs[0]:=1440; pf2.rgxTabs[1]:=2880; pf2.rgxTabs[2]:=4000; pf2.rgxTabs[3]:=5000; pf2.rgxTabs[4]:=6000; SendMessage(form1.Richedit1.Handle, EM_SETPARAFORMAT, 0, Longint(@pf2)); end; name 1 name 12 und eben nicht: name 1 name 12 Hat jemand eine Idee? Ich bin ein Newbie mit den API-Geschichten. Danke! [edit=Matze][delphi]-Tags eingefügt. MfG, Matze[/edit] |
Re: tabstop rechtsbündig
bitte benutze mal diese [delphi]...[/delphi]-Tags
sowie [code]...[/code] für dein Beispiel (die Leerzeichen sind sonst sinnlos) du kannst deinen Beitrag auch noch editieren und dieses ändern ... einfach auf [edit] klicken und für WinAPI-Sachen ![]() dort klickst du dich zum passenden Eintrag durch ![]() da geht es dann weiter mit den Records (sind da verlinkt) ![]() und dort steht wiederum was man wie setzen muß, damit das gewünschte passiert. siehe rgxTabs |
Re: tabstop rechtsbündig
Hallo,
sorry, werde mich zukünftig daran halten. Wäre es möglich, ein bisschen Quellcode zu erhalten? Ich habe nämlich leider wirklich nicht so viel Ahnung; es wäre aber wichtig für mich, dieses Problem mit den Tabstops zu lösen... VIELEN Dank! |
Re: tabstop rechtsbündig
den Quellcode hast du schon
und was du genau ändern mußt, das steht im MSDN
Delphi-Quellcode:
... = hier jetzt die Werte dazurechnen, welche da drüben erwähnt wurden
pf2.rgxTabs[1] := 2880 or ...;
Aber vermutlich hast du eh pech und es geht bei dir nicht. Du hast ja nicht erwähnt welche Delphi-Version und welches OS du nutzt. Zitat:
|
Re: tabstop rechtsbündig
Hallo,
vielen Dank. Ich habe TurboDelphi und Windows Vista. Den Wert hinter dem "or", ist das der Wert "2" für "right aligned tab"? oder muss ich dort $2000000 eintragen? Vielen Dank! |
Re: tabstop rechtsbündig
Ach ja, und wie genau funktioniert das mit dem 24-27 bit?
|
Re: tabstop rechtsbündig
Delphi-Quellcode:
$0x000000 = Bits 24-27
pf2.rgxTabs[1] := 2880 or (2{rechts} shl 24);
pf2.rgxTabs[1] := 2880 or $02000000; $x0000000 = Bits 28-31 |
Re: tabstop rechtsbündig
Vielen, vielen Dank!
|
Re: tabstop rechtsbündig
Ich habe jetzt folgenden Quelltext entworfen:
Delphi-Quellcode:
Das Setzen der Tabstops funktioniert offenbar bestens. Leider funktioniert nicht, dass das Tab [1] rechtsbündig ist.
unit Paraformat_Beispiel;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, richedit, StdCtrls, ComCtrls; type TForm1 = class(TForm) RichEdit1: TRichEdit; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var pf2 : PARAFORMAT2; i : Integer; begin SendMessage(Richedit1.Handle, EM_GETPARAFORMAT, 0, Longint(@pf2));// brauche ich das? FillChar(pf2, SizeOf(pf2), 0); // brauche ich das? pf2.cbSize := SizeOf(pf2); pf2.dwMask := PFM_Tabstops; pf2.cTabCount :=5; pf2.rgxTabs[0]:=1440; pf2.rgxTabs[1]:=2880 or $02000000; pf2.rgxTabs[2]:=4000; pf2.rgxTabs[3]:=5000; pf2.rgxTabs[4]:=6000; SendMessage(Richedit1.Handle, EM_SETPARAFORMAT, 0, Longint(@pf2)); end; end. Bitte: Was fehlt an meinem Quellcode? Mein System: Vista, Turbodelphi. Vielen Dank! |
Re: tabstop rechtsbündig
Hallo,
kann mir irgendwer helfen? Danke! |
Re: tabstop rechtsbündig
Hallo,
ich zitiere noch mal ... Zitat:
Auch die Wrapperklasse in TurboDelphi unterstützt nur RichEdit 2.0. und wenn ich das ![]() Zitat:
![]() |
Re: tabstop rechtsbündig
Ob nun Richedit 2 oder 3 verwendet wird, liegt auch mit am Windows, bzw. der initialisierten Common-Controls.
Der Windows-Fensterklassenname für v2 und v3 ist gleich und was nun genommen wird hängt dann nur noch von den Common-Controls ab. Klar hat Delphi nur die Schnittstellen für v2 und unterstützt IDE-seitig nicht mehr, aber das RichEdit kann es ja dennoch. Also kann man in soeinem Fall auch die RichEdit3-Befehle verwenden. |
Re: tabstop rechtsbündig
In D7 wird aber noch Version 1 verwendet (Riched32.dll)
|
Re: tabstop rechtsbündig
Jupp, durm ja die Frage nach Delphi und OS
Delphi > welche Windows-Fensterklasse wird zum Erstellen genommen Delphi > mit oder ohne Manifest und welche CommonControls wurden initialisiert OS > was steht überhaupt zu Verfügung |
Re: tabstop rechtsbündig
Hallo,
mein OS ist Windows Vista Home Premium mit allen Updates. Ich habe Turbo Delphi (ca. 2 Jahre alt); ich habe das xp-manifest "installiert". Wie checke ich, welche Common-controls initialisiert wurden? Frage: Würde es laufen, wenn ich Delphi 2010 hätte? |
Re: tabstop rechtsbündig
Hallo,
Zitat:
Zitat:
Das ist schon ab D3 so. |
Re: tabstop rechtsbündig
Hallo,
ich habe jetzt folgendes eingefügt: LoadLibrary('msftedit.dll'); Und da hat es irgenwie auch teilweise EINMAL funktioniert. Jetzt aber nicht mehr. Schade. Noch einen Tipp parat? |
Re: tabstop rechtsbündig
Das Problem ist halt, das die delphieigene VCL-Komponente erstmal nur "mindestens" ein Richedit 2.0 anfordert.
Und ob es nun ein 2.0 oder ein 3.0 bekommt, daß hängt nun von mehreren faktoren ab, auf welche du garnicht sso genau Einfluß nehmen kannst. Allerdings sind die gewünschten Funktionalitäten nur mindestestens in einem 3 enthalten (besser wäre ein 4 oder gar 5, da diese eigenständige Windowskomponenten sind ... nicht so wie 2 und 3) |
Re: tabstop rechtsbündig
Hallo,
und wie kann ich ein "Dreier" laden lassen? Ich habe jetzt Delphi 2010, Windows 7. Sollte es damit funktionieren? Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz