Ir al contenido


Foto

¿carencia de una arquitectura o ignorancia mía?


  • Por favor identifícate para responder
2 respuestas en este tema

#1 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 mensajes
  • LocationMisiones, Argentina

Escrito 17 octubre 2015 - 07:14

Hace poco me planteé el problema de utilizar un mismo procedimiento para procesar el evento de varios objetos, el asunto es que se puede agregar un control del evento en cuestión por cada control y a lo sumo que sea el mismo procedimiento al que se dirija, pero cuando se desea recorrer los controles para "saber" si alguno produjo un evento, eso es otra cosa.

 

Me explico mejor con un ejemplo:

Tengo tres botones y quiero capturar el evento click, para esto debo crear un "disparador" del evento y al menos un procedimiento al cual llame en ese caso.

Es posible dirigir ese click -para los tres botones- al mismo procedimiento y dentro de este procedimiento detectar cual control lo generó. Hasta ahí todo bien.

El lío se arma cuando se intenta dar un paso más a la generalización, es decir, reconocer que se ha generado un evento y que el padre sea el que dispara a un procedimiento para reconocer cual control hijo lo inició. Esto supone un único "disparador" y un único procedimiento.

 

Este problema surgió cuando intenté escribir una ayuda para cada control de la pantalla, cuando se pase el puntero del ratón sobre tal control. Existe el Hint, claro, pero si se intenta hacer que ese hint aparezca en una ubicación única de la pantalla, es otra cosa. Si mal no recuerdo lo hice hace mucho, pero no recuerdo si tuve que crear un "disparador" para cada control o no.

 

Saludos

 


  • 0

#2 Héctor Randolph

Héctor Randolph

    501st Legion

  • Moderadores
  • PipPipPip
  • 664 mensajes
  • LocationMéxico

Escrito 17 octubre 2015 - 11:15

Hola Cram

 

Para enviar los mensajes del Hint a un control específico puedes utilizar el evento OnHit de TApplication.

 

Aquí un ejemplo envíando a un TStatusBar


delphi
  1. ...
  2.  
  3. private
  4. { private declarations }
  5. procedure AppHint(Sender : TObject);
  6. ...
  7.  
  8. procedure TFormPrincipal.AppHint(Sender: TObject);
  9. begin
  10. StatusBar1.Panels[0].Text:= Application.Hint;
  11. end;
  12.  
  13. procedure TFormPrincipal.FormCreate(Sender: TObject);
  14. begin
  15. Application.OnHint:= @AppHint;
  16. end;

Saludos


  • 1

#3 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 mensajes
  • LocationMisiones, Argentina

Escrito 17 octubre 2015 - 04:32

Hola Cram

 

Para enviar los mensajes del Hint a un control específico puedes utilizar el evento OnHit de TApplication.

 

Aquí un ejemplo envíando a un TStatusBar


delphi
  1. ...
  2.  
  3. private
  4. { private declarations }
  5. procedure AppHint(Sender : TObject);
  6. ...
  7.  
  8. procedure TFormPrincipal.AppHint(Sender: TObject);
  9. begin
  10. StatusBar1.Panels[0].Text:= Application.Hint;
  11. end;
  12.  
  13. procedure TFormPrincipal.FormCreate(Sender: TObject);
  14. begin
  15. Application.OnHint:= @AppHint;
  16. end;

Saludos

 

Gracias Héctor, sabía que había una manera, pero la había olvidado por completo (o quizás la desconocía, ya no sé).

Es para los Hints, exactamente, me parecía que tenía que ser yo, no la arquitectura... :shocked:

Hice miles de pruebas, bibliotecas, etc. Olvidé muchas técnicas simples y otras no tanto, perdí bibliotecas también y con ellas más técnicas.

Es por hacer más de una cosa a la vez y no poder tener continuidad en programación.

 

Ahora mismo lo implemento.

 

Saludos.


  • 0




IP.Board spam blocked by CleanTalk.