 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
DCelso Cdt

Registrado: 19 Abr 2004Mensajes: 11
|
Publicado: Mar 06 Jul, 2004 6:30 pm Asunto: Llamar a una API de windows en una clase derivada |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 08 Jul, 2004 12:22 am Asunto: |
|
|
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 |
|
 |
dcelso_ Invitado
|
Publicado: Jue 08 Jul, 2004 6:26 pm Asunto: Gracias |
|
|
Gracias, _Leo, lo de los dos puntos va de perillas, mira que no ocurrirseme.
Por lo que dices del caret, no he hayado manera de ponerlo en marcha. Me sigue pasando lo mismo. |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|