[Lazarus] Measuring text width in a TEdit

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[Lazarus] Measuring text width in a TEdit

Free Pascal - Lazarus mailing list
Hi List.

I want to know the placement of the caret (in pixels, not character
count) in a TEdit. However i am struggeling to fint a method that will
allow me to do so.

If i try to calculate it using the assigned font, I have the problem
that TEdit.Font.GetTextWidth always returns the default size (16), since
the Font doesn't have a canvas assigned to it.

The TEdit itself does not really have any methods for calculation the
caret position in pixels either.

All suggestions are welcome. :)


Kind regards,
Torsten Bonde Christiansen.
--
_______________________________________________
Lazarus mailing list
[hidden email]
http://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [Lazarus] Measuring text width in a TEdit

Free Pascal - Lazarus mailing list

Hi,

 

maybe you can create some temporary canvas, assign TEdit.Font to TCanvas.Font, do the measurement and free that canvas.

 

V.

______________________________________________________________
> Od: Torsten Bonde Christiansen via Lazarus <[hidden email]>
> Komu: Lazarus mailing list <[hidden email]>
> Datum: 30.05.2017 08:36
> Předmět: [Lazarus] Measuring text width in a TEdit
>

Hi List.

I want to know the placement of the caret (in pixels, not character
count) in a TEdit. However i am struggeling to fint a method that will
allow me to do so.

If i try to calculate it using the assigned font, I have the problem
that TEdit.Font.GetTextWidth always returns the default size (16), since
the Font doesn't have a canvas assigned to it.

The TEdit itself does not really have any methods for calculation the
caret position in pixels either.

All suggestions are welcome. :)


Kind regards,
Torsten Bonde Christiansen.
--
_______________________________________________
Lazarus mailing list
[hidden email]
http://lists.lazarus-ide.org/listinfo/lazarus

--
_______________________________________________
Lazarus mailing list
[hidden email]
http://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [Lazarus] Measuring text width in a TEdit

Free Pascal - Lazarus mailing list
In reply to this post by Free Pascal - Lazarus mailing list
On 30/05/2017 07:36, Torsten Bonde Christiansen via Lazarus wrote:
> Hi List.
>
> I want to know the placement of the caret (in pixels, not character
> count) in a TEdit. However i am struggeling to fint a method that will
> allow me to do so.
>
> If i try to calculate it using the assigned font, I have the problem
> that TEdit.Font.GetTextWidth always returns the default size (16),
> since the Font doesn't have a canvas assigned to it.

If you are on windows (and win only), you may be able to use GetCaretPos
https://msdn.microsoft.com/en-us/library/windows/desktop/ms648402(v=vs.85).aspx
(That is, if the edit is focused, and has the caret)

On Windows there is only one caret per App, so if the TEdit has it, then
GetCaretPos should get the pos for that Edit.

Of course win only, and the Edit needs the focus. (And not tested at all)
--
_______________________________________________
Lazarus mailing list
[hidden email]
http://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [Lazarus] Measuring text width in a TEdit

Free Pascal - Lazarus mailing list
In reply to this post by Free Pascal - Lazarus mailing list
On 30.05.2017 08:36, Torsten Bonde Christiansen via Lazarus wrote:

> Hi List.
>
> I want to know the placement of the caret (in pixels, not character
> count) in a TEdit. However i am struggeling to fint a method that will
> allow me to do so.
>
> If i try to calculate it using the assigned font, I have the problem
> that TEdit.Font.GetTextWidth always returns the default size (16), since
> the Font doesn't have a canvas assigned to it.
>
> The TEdit itself does not really have any methods for calculation the
> caret position in pixels either.
>
> All suggestions are welcome. :)

I'm using TBitmap which assigns TEdit.Font for such cases.Measurement is
correct.

zeljko

--
_______________________________________________
Lazarus mailing list
[hidden email]
http://lists.lazarus-ide.org/listinfo/lazarus
Loading...