> 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

Reply via email to