Muchas garcias ecfisa. Funciona a la perfección salvo que me da un mensaje de error '
Cannot make a visible window modal', y eso sí que no sé como resolverlo. Estoy usando este código:
Código:
void __fastcall TfColegio::Button1Click(TObject *Sender)
{
AnsiString cAux;
Query->Close();
Query->SQL->Text = "SELECT Formacion, Registro FROM Formacion ORDER BY Formacion";
Query->Open();
Application->CreateForm(__classid(TfAyuda), &fAyuda);
for (; !Query->Eof; Query->Next())
{
pItem = fAyuda->Ayuda->Items->Add();
pItem->Caption = Query->FieldByName("Formacion")->AsString;
pItem->SubItems->Add("");
pItem->SubItems->Add(Query->FieldByName("Registro")->AsInteger);
}
pItem = NULL;
fAyuda->Refresh();
fAyuda->ShowModal();
delete fAyuda;
}
//---------------------------------------------------------------------------
Y es en ese fAyuda es donde he puesto el código que me indicas:
Código:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Ayuda.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfAyuda *fAyuda;
TWndMethod OldListViewProc;
//---------------------------------------------------------------------------
__fastcall TfAyuda::TfAyuda(TComponent* Owner)
: TForm(Owner)
{
OldListViewProc = Lista->WindowProc;
Lista->WindowProc = ListViewWindowProc;
}
//---------------------------------------------------------------------------
void __fastcall TfAyuda::ListViewWindowProc(TMessage &Message)
{
if (Message.Msg == WM_NOTIFY)
{
const NMHDR *phdr = (NMHDR*)Message.LParam;
if ((phdr->code == HDN_BEGINTRACKA) || (phdr->code == HDN_BEGINTRACKW) ||
(phdr->code == HDN_DIVIDERDBLCLICKA) || (phdr->code == HDN_DIVIDERDBLCLICKW))
{
Message.Result = TRUE;
return;
}
}
OldListViewProc(Message);
}
//---------------------------------------------------------------------------