[Lazarus] Maybe a bug: click on TImage behind another control with SetShape

Fabio Luis Girardi fluisgirardi at gmail.com
Sat Nov 22 13:41:08 CET 2014


The problem is the concept of "transparent".

2014-11-22 10:40 GMT-02:00 Fabio Luis Girardi <fluisgirardi at gmail.com>:

> I think that we aren't talking about the same thing.
>
> I think that a transparent control must retain clicks to another controls
> if it is uppermost and in front of these controls. I think that this is
> correct.
>
> Polyline is a different control. The area of line is the area of the
> control, other area will be full transparent and must pass the events to
> controls behind. If you click on line, the click must be fired on Polyline
> object, otherwise, it must be fired on the first control behind of polyline.
>
> The bug here is: I have two TImages and one polyline. The uppermost is
> TImage is positioned in a removed area (transparent) of polyline and the
> other TImage is the background. When I click on uppermost TImage click
> isn't fired on it nor on background TImage. It's fired on TForm! The same
> behavior happens if polyline is the uppermost control.
>
> Using SetShape make the "click" ignore TImages and TSpeedButtons (in front
> or behind) positioned in a removed area of a Shaped control.
>
> Since the click messages are processed on parent, I made the message
> redirection. Now I'm studing a way to check if the click is on a control
> area or not, to make a TControl.CMHitTest fix.
>
>
>
>
> 2014-11-22 7:57 GMT-02:00 Frederic Da Vitoria <davitofrg at gmail.com>:
>
> I may be wrong, but this seems different from the problem you are
>> describing: in the bugtracker issue, the click triggers the Form handler
>> instead of being sent to a Control. In your problem, from your description,
>> I thought the click triggered the polyline control while you would have
>> wanted it to be handled by the TImage which is behind the polyline. In a
>> way, your problem is not enough transparency (in terms of who gets to
>> handle the click event) while the bugtracker bug is too much transparency.
>> Or did I misunderstand you?
>>
>>
>> 2014-11-22 10:01 GMT+01:00 Fabio Luis Girardi <fluisgirardi at gmail.com>:
>>
>>> Here is it: http://bugs.freepascal.org/view.php?id=20381
>>>
>>> 2014-11-21 22:24 GMT-02:00 Fabio Luis Girardi <fluisgirardi at gmail.com>:
>>>
>>> I found this bug on bug tracker. I followed your idea and send a patch
>>>> that solves this. I'll try another approach tomorrow.
>>>>
>>>> Thank you very much!
>>>> Em 21/11/2014 20:48, "Frederic Da Vitoria" <davitofrg at gmail.com>
>>>> escreveu:
>>>>
>>>> 2014-11-21 16:01 GMT+01:00 Frederic Da Vitoria <davitofrg at gmail.com>:
>>>>>
>>>>>>
>>>>>> 2014-11-20 19:21 GMT+01:00 Fabio Luis Girardi <fluisgirardi at gmail.com
>>>>>> >:
>>>>>>
>>>>>>> I don't know if this is a bug or not. I created a control from a
>>>>>>> TCustomControl that draws a polyline with a transparent background. The
>>>>>>> transparent effect has been using SetShape procedure using a bitmap of 1
>>>>>>> bit color depth.
>>>>>>>
>>>>>>> The "bug" (I don't know if this is a bug) is that a TImage behind of
>>>>>>> a instance of my polyline control don't receive the click messages, but a
>>>>>>> TButton instance receives.
>>>>>>>
>>>>>>> So, I don't know if this is a bug or I have to do something in my
>>>>>>> control to send these messages to TImage behind.
>>>>>>>
>>>>>>
>>>>>> I had once a similar issue with a tPanel behind another control, in
>>>>>> Delphi. IIRC, I indeed had to forward the messages in some way to the
>>>>>> tPanel. I can check in my archives, if you want, but I won't be able to do
>>>>>> it before tomorrow.
>>>>>>
>>>>>
>>>>> I just checked. Sorry, my memory was wrong, I did use TButtons. But it
>>>>> makes sense that the uppermost control would prevent any deeper control
>>>>> from receiving clicks, even if the uppermost control is visually
>>>>> transparent.
>>>>>
>>>>
>> --
>> Frederic Da Vitoria
>> (davitof)
>>
>> Membre de l'April - « promouvoir et défendre le logiciel libre » -
>> http://www.april.org
>>
>
>
>
> --
> The best regards,
>
> Fabio Luis Girardi
> PascalSCADA Project
> http://sourceforge.net/projects/pascalscada
> http://www.pascalscada.com
>



-- 
The best regards,

Fabio Luis Girardi
PascalSCADA Project
http://sourceforge.net/projects/pascalscada
http://www.pascalscada.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20141122/6528956d/attachment-0003.html>


More information about the Lazarus mailing list