> Please show more code.
Hello Martin.
Maybe I use a obsolete way but it works perfectly.
For example, for Ttabbar =>
if (Sender is Ttabbar) then
Result := 'tabbar, ' + Ttabbar(Sender).name + ', ' +
Ttabbar(Sender).tabs[ttabbar(Sender).activetag-1].caption
Works like wanted ;-).
Here the complete code to get the name of a widget.
Each assistive event has that code, for example =>
procedure TSAK.clientmouseevent(const sender: iassistiveclient;
const info: mouseeventinfoty);
begin
if WhatName(Sender.getinstance) <> '' then
begin
...
=> Here function => WhatName:
___________________________________
function TSak.WhatName(Sender: TObject): msestring;
begin
Result := '';
if (Sender is TLabel) then
Result := 'label, ' + TLabel(Sender).Caption
else
if (Sender is TButton) then
begin
if (trim(TButton(Sender).Caption) <> '') then
Result := 'button, ' + TButton(Sender).Caption
else
if (trim(TButton(Sender).Name) <> '') then
Result := 'button, ' + TButton(Sender).Name
else
if (trim(TButton(Sender).hint) <> '') then
Result := 'button, ' + TButton(Sender).hint;
end
else
if (Sender is TStringEdit) then
Result := 'edit, ' + TStringEdit(Sender).Name
else
if (Sender is tdatetimeedit) then
Result := 'date edit, ' + tdatetimeedit(Sender).Name
else
if (Sender is trealedit) then
Result := 'real edit, ' + trealedit(Sender).Name
else
if (Sender is tintegeredit) then
Result := 'integer edit, ' + tintegeredit(Sender).Name
else
if (Sender is TMemoEdit) then
Result := 'memo, ' + TMemoEdit(Sender).Name
else
if (Sender is Twidgetgrid) then
Result := 'page, ' + Twidgetgrid(Sender).Name
else
if (Sender is Tstringgrid) then
Result := 'grid, ' + Tstringgrid(Sender).Name
else
if (Sender is ttabpage) then
Result := 'tab, page, ' + ttabpage(Sender).caption
else
if (Sender is ttab) then
Result := 'tab, ' + ttab(Sender).caption
else
if (Sender is Ttabwidget) then
Result := 'tabwidget, ' + Ttabwidget(Sender).Name
else
if (Sender is Ttabbar) then
Result := 'tabbar, ' + Ttabbar(Sender).name + ', ' +
Ttabbar(Sender).tabs[ttabbar(Sender).activetag-1].caption
else
if (Sender is Tstringdisp) then
Result := 'Info panel, ' + Tstringdisp(Sender).value
else
if (Sender is Tdatetimedisp) then
Result := 'Date panel, ' + Tdatetimedisp(Sender).name
else
if (Sender is tbooleandisp) then
Result := 'Boolean panel, ' + tbooleandisp(Sender).name
else
if (Sender is trealdisp) then
Result := 'Date panel, ' + trealdisp(Sender).name
else
if (Sender is tintegerdisp) then
Result := 'Integer panel, ' + tintegerdisp(Sender).name
else
if (Sender is tstockglyphbutton) then
Result := 'button, ' + tstockglyphbutton(Sender).name
else
if (Sender is Tenumedit) then
Result := 'combo box, ' + Tenumedit(Sender).Name
else
if (Sender is tbooleaneditradio) then
begin
if (Tbooleaneditradio(Sender).frame.Caption <> '') then
Result := 'radio button, ' + Tbooleaneditradio(Sender).frame.Caption
else
Result := 'radio button, ' + Tbooleaneditradio(Sender).Name;
end
else if (Sender is tbooleanedit) then
begin
if (Tbooleanedit(Sender).frame.Caption <> '') then
Result := 'checkbox, ' + Tbooleanedit(Sender).frame.Caption
else
Result := 'checkbox, ' + Tbooleanedit(Sender).Name;
end
else
if (Sender is ttoolbar) then
Result := 'tool bar, ' + ttoolbar(Sender).getassistivehint()
// Result := 'tool bar, ' + Sender.getassistivehint() => not working
else
if (Sender is tslider) then
Result := 'slider, ' + Tslider(Sender).Name
else
if (Sender is ttoolbutton) then
Result := 'tool button, ' + ttoolbutton(Sender).hint
else
if (Sender is tmenuitem) then
begin
if (tmenuitem(Sender).Caption <> '') then
Result := 'menu item , ' + tmenuitem(Sender).Caption
else
Result := 'menu item , ' + tmenuitem(Sender).Name;
end
else
if (Sender is tmainmenu) or (Sender is tmainmenuwidget) or (Sender is tmenu)
or (Sender is tcustommenu) or (Sender is tpopupmenu) then
Result := 'menu, '
else if (Sender is twidget) then Result := 'Unknown ' + Twidget(Sender).Name +
', ' ;
end;
______________________________________
Each widget is working ok.
But there is a mystery about tab...
In MSEide, in sourceform it uses tab for each opened source. (vertical list of
tab on right size of form).
Sadly, at mousemove, it is not recognized as ttabpage nor ttab nor ttabwidget
nor ttabbar with WhatName(sender) but as "Unknown" with the correct caption.
What widget is it ?
Is it possible to retrieve the class name of a component (or maybe there are no
class-name for component in MSE).
Or do you have a idea how to know what type of component is the sender ?
Many thanks.
Fred.
PS: Complete code there => https://github.com/fredvs/sak
PS2: To use the last commit, getassistivehint() must be public.
PS3: You may try it with MSEide => must work out of the box, all widgets must
be assisted, with only sak.loadlib(sakit_dir) in mainform.create().
------------------------------------------------------------------------------
_______________________________________________
mseide-msegui-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mseide-msegui-talk