Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Llamar a una API de windows en una clase derivada

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Llamar a una API de windows en una clase derivada Responder citando

Hola, mi problema es que estoy creando un componenete TCustomGrid y en la clase
le he creado un método con el mismo nombre de una api, y dentro de su definición me gustaría poder llamar a la api de windows despues de hacer unas cuantas cosas, el problema es que pongo el nombre de la api y me dice el compilador que no corresponde con la declaración, y claro eso es culpa de que tiene el mismo nombre que mi método.
en pascal se hace poniendo delante la palabra windows.
Exactamente la api es la de createcaret.
mi método es CreateCaret(Row,Col);
He probado con llamar a su antecesor con TCustomGrid::CreateCaret(Handle,Rect); pero no rula.
en pascal es algo como poner Windows.CreateCaret(Handle,Rect);
en C he probado con poner Windows->CreateCaret(Handle,Rect), pero tampoco rula.

Parcialmente lo he solucionado cambiando el nombre al métido por CreateCaret1, pero es algo como que cutre.

Otro Problema que me ha surgido es que cuando tengo el Grid y un Edit. al irme al Edit, el caret pasa a este, pero al volver al Grid, el caret me desaparece, he probado con showcaret, y no va, tambien he probado a destruirlo con destroy y crearlo de nuevo con createcarer y tampoco va.
Sigue desaparecido.
No se me ocurre ninguna idea para solucionar ninguno de estos problemas.
Gracias de antemano por la ayuda.

Tambien me gustaría ponerle el evento onchange u onmoverowcol, para hacer que en caso de que el usuario se mueva por el grid se muestr en pantalla su posicion actual en el grid en el statusbar o donde le diga.
He buscado y he probado traer el evento de sus antecesores pero no me deja, el compilador da un error diciendo que no pertenece a sus antecesor principal. Esto es debido a que se encuentra en un pariente lejano y no en el padre.
Tambpon he encontrado solución a este problema.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

La sintaxis del CreateCaret del API es la siguiente:

BOOL CreateCaret(HWND hWnd, HBITMAP hBitmap, int nWidth, int nHeight);

Así que no veo como te puede dar problemas, ya que al tener distintos argumentos aun teniendo el mismo nombre en C++ son como funciones diferentes. De todos modos puedes probar anteponiendo "::" (::Create...)


Y lo segundo, relacionado con el cursor. Lo normal es "crearlo, posicionarlo y mostrarlo" al recibir el foco y "ocultarlo y destruirlo" al perder el foco. Y si necesitamos pintar algo, "ocultarlo, pintar, mostrarlo". Pero con la VCL todo esto solo es necesario si estamos creando un control muy desde la base.

De todos modos es muy difícil saber que ocurre sin ver el código. Así que si quieres no tengo problema en echarle un vistazo e intentar ayudarte en lo que pueda:

leosoft ARROBA telefonica PUNTO net
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Gracias Responder citando

Gracias, _Leo, lo de los dos puntos va de perillas, mira que no ocurrirseme. Very Happy
Por lo que dices del caret, no he hayado manera de ponerlo en marcha. Me sigue pasando lo mismo.
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.