Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TEdit mit Rand (https://www.delphipraxis.net/74400-tedit-mit-rand.html)

Martin K 2. Aug 2006 16:48


TEdit mit Rand
 
Hi,

ich würde gerne vom TEdit ableiten und will, dass nur in einem Bestimmten Bereich des Edits geschrieben wird,
also z.B. sollen rechts 20 Pixel frei bleiben.

Wie kann ich das machen?

Flocke 2. Aug 2006 17:03

Re: TEdit mit Rand
 
Probiere das hier (z.B. in CreateWindowHandle nach inherited):
Delphi-Quellcode:
  SendMessage(Edit1.Handle, EM_SETMARGINS, EC_RIGHTMARGIN, MAKELONG(0, 20));
//Nachtrag: und nach WM_SETFONT/inherited solltest du es auch noch einmal setzen, da die VCL es zurücksetzt.

Martin K 2. Aug 2006 17:12

Re: TEdit mit Rand
 
Super, das geht :thumb:
Danke!

Und wenn ich den Rand jetzt auf der linken Seite haben will?
Ich dachte, bei MAKELONG einfach die Parameter vertauschen, aber das klappt nich...

Flocke 2. Aug 2006 17:13

Re: TEdit mit Rand
 
Delphi-Quellcode:
// Setzt den linken Rand
SendMessage(Edit1.Handle, EM_SETMARGINS, EC_LEFTMARGIN, MAKELONG(LinkerRand, 0));
// Setzt den rechten Rand
SendMessage(Edit1.Handle, EM_SETMARGINS, EC_RIGHTMARGIN, MAKELONG(0, RechterRand));
// Setzt beide Ränder
SendMessage(Edit1.Handle, EM_SETMARGINS, EC_LEFTMARGIN or EC_RIGHTMARGIN, MAKELONG(LinkerRand, RechterRand));

Martin K 2. Aug 2006 17:16

Re: TEdit mit Rand
 
Natürlich :wall: :wall: :wall:
Bin auch grad drauf gekommen.
Hätt ich mir den Code nur mal durchgelesen...
Es muss dann EC_LEFTMARGIN heißen.

Also müsste ich dann so wieder die Standardeinstellungen zurücksetzen können?
Ist denn 0 Standard?
Delphi-Quellcode:
SendMessage(Edit1.Handle, EM_SETMARGINS, EC_LEFTMARGIN or EC_RIGHTMARGIN, MAKELONG(0, 0));

Flocke 2. Aug 2006 17:19

Re: TEdit mit Rand
 
Wie die Standardwerte sind weiß ich nicht, kann sogar vom Theme abhängen (denke ich). Du könntest sie vorher mit EM_GETMARGINS sichern. Die VCL setze übrigens nach jedem erhaltenen WM_SETFONT die Ränder wieder auf Null, also ist das für Delphi sozusagen der Standardwert.

Martin K 2. Aug 2006 17:27

Re: TEdit mit Rand
 
Wie müssen denn bei EM_GETMARGINS die anderen Parameter aussehen ?

//Edit:
Ich denke das mit 0 als Standard müsste schon in Ordnung gehen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 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