miércoles, 5 de noviembre de 2008

Freemem de BookMark

S'ha de tenir en compte que quan es treballa amb un TADOQuery i es vol fer servir un bookmark, si fem servir el mètode getBookMark s'ha d'alliberar la memòria. Això es degut a que getBookMark reserva un espai de memòria per guardar el punter.

function TDataSet.GetBookmark: TBookmark;
begin
if BookmarkAvailable then
begin
GetMem(Result, FBookmarkSize);
GetBookmarkData(ActiveBuffer, Result);
end else
Result := nil;
end;

Per tant s'hauria d'alliberar la memòria en aquests casos. Per a fer-ho tenim el mètode FreeBookMark(Bookmark: TBookmark). Que allibera el punter bookmark.

Codi d'exemple:

// Guardem on tenim situat el cursor actualment en el QDiari
QDiariBookmark := QDiari.GetBookmark;
try
..... Aquí podem afegir qualsevol codi
finally
QDiari.FreeBookmark(QDiariBookmark);
end;

lunes, 13 de octubre de 2008

jueves, 9 de octubre de 2008

Refresh d'un TADOQuery

En un TADOQuery no es pot fer un refresh, ja que està pensat per a treballar amb tres capes (datasnap). Fins ara el que feiem era obrir i tancar el query per refrescar-lo. He trobat i provat el següent codi i realment refresca el query sense la necessitat d'executar la consulta i enviar tots els missatges de nou. El codi que fa això es:

procedure Refresh(ds: TADOCustomDataSet)
var
book: TBookMark;
begin
book := ds.GetBookmark;
try
ds.Requery;
ds.GotoBookmark(book);
finally
ds.FreeBookmark(book);
end;
end;

viernes, 3 de octubre de 2008

Crear Documentació i Diagrames des del Model View de Delphi

Per crear la documentació del model UML i la generació de l'ajuda de programador a l'estil JavaDoc, hem de fer:


Ens apareixerà un diagrama amb les nostres classes:


Fent doble-click sobre aquesta, podem obrir el diagrama UML:


Un cop a sobre el model, podem fer botó dret per desplegar el menú contextual:



Generem la documentació a la ruta indicada:



Un cop generada tota la documentació, podem accedir a la informació mitjançant l'index.html que apareixerà dins la ruta de generació de documentació.