The developer curious
sábado, 25 de julho de 2015
quarta-feira, 8 de abril de 2015
[Delphi] Criar checkbox (TDBGrid - TColumnTitle)
Caros, a pedido do meu amigo kylderi apliquei um checkbox no header de uma coluna do TDBGrid, então criei uma unit para tal tarefa, veja aqui.
terça-feira, 31 de março de 2015
Criar checkbox em header (cxGrid - DevExpress)
Caros, hoje precisei colocar um checkbox no header de uma coluna da cxGrid, então criei uma unit para tal tarefa, segue código;
//Jucelio Moura, j03071986@gmail.com
unit uCxGridTools;
interface
uses System.SysUtils, System.Classes, Vcl.Graphics, Json,
cxGridDBTableView, Data.DB, System.Math, cxCheckBox;
type
TImageCollun = class
private
FSizeStr: Int64;
FImageStr: string;
function GetImageStr: TBitmap;
function StrToBitmap: TBitmap;
public
constructor Create(const ASize: Int64; AImageStr: string);
published
property Image: TBitmap read GetImageStr;
end;
THelperTcxGridDBColumn = class helper for TcxGridDBColumn
private
procedure TableViewFlagHeaderClick(Sender: TObject);
procedure ChangesBoolValue(const AValue: Boolean);
function GetImage(const AValue: Boolean): TBitmap;
procedure SetSettings;
public
procedure ChangesBool(const AValue: Boolean = False);
end;
implementation
{ TImageCollun }
constructor TImageCollun.Create(const ASize: Int64; AImageStr: string);
begin
FSizeStr:= ASize;
FImageStr:= AImageStr;
end;
function TImageCollun.GetImageStr: TBitmap;
begin
Result:= StrToBitmap;
end;
function TImageCollun.StrToBitmap: TBitmap;
var
loArqStream: TStringStream;
loFileString: String;
loFileSize, loi: Integer;
loArrayStringsFile: TStringList;
loFileBytes: Tbytes;
begin
try
try
loFileString := FImageStr;
loFileSize := FSizeStr;
loArrayStringsFile := TStringList.Create;
ExtractStrings([','], [' '], PChar(loFileString),
loArrayStringsFile);
SetLength(loFileBytes, loFileSize);
for loi := 0 to Pred(loFileSize) do
loFileBytes[loi] := StrToInt(loArrayStringsFile[loi]);
loArqStream := TStringStream.Create(loFileBytes);
Result:= TBitmap.Create;
Result.LoadFromStream(loArqStream);
finally
loArqStream.Free;
loArrayStringsFile.Free;
end;
except
FreeAndNil(Result);
raise;
end;
end;
{ THelperTcxGridDBColumn }
procedure THelperTcxGridDBColumn.ChangesBool(const AValue: Boolean = False);
begin
OnHeaderClick:= TableViewFlagHeaderClick;
HeaderGlyph:= GetImage(AValue);
SetSettings;
Tag:= IfThen(AValue, 1, 0);
end;
procedure THelperTcxGridDBColumn.ChangesBoolValue(const AValue: Boolean);
var
loBook: TBookmark;
begin
with TcxGridDBTableView(Self.GridView).DataController.DataSource.DataSet do
begin
loBook:= Bookmark;
DisableControls;
try
First;
while not Eof do
begin
Edit;
FieldByName(Self.DataBinding.FieldName).AsBoolean:= AValue;
Post;
Next;
end;
finally
if BookmarkValid(loBook) then
GotoBookmark(loBook);
EnableControls;
end;
end;
end;
function THelperTcxGridDBColumn.GetImage(const AValue: Boolean): TBitmap;
var
loImageCollun: TImageCollun;
loImgStr: string;
loSize: Int64;
begin
case AValue of
True: begin
loSize:= 822;
loImgStr:= '66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 196, 14, 0, '+
'0, 196, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 254, 254, 254, 191, 191, 191, 167, 167, 167, 167, 167, 167, 167, '+
'167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, '+
'191, 191, 191, 254, 254, 254, 255, 255, 255, 254, 254, 254, 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '+
'0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53, 254, 254, 254, 191, 191, 191, 0, 0, 0, 200, 200, 200, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 200, 200, 200, 0, 0, 0, 191, 191, 191, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 247, 247, 247, 229, 229, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 0, 0, 0, 167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 243, 243, 243, 60, 60, 60, 1, 1, 1, 157, 157, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 0, 0, 0, 167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 251, 251, 251, 60, 60, 60, '+
'23, 23, 23, 107, 107, 107, 1, 1, 1, 157, 157, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, '+
'167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 244, 244, 244, 74, 74, 74, 212, 212, 212, 255, '+
'255, 255, 127, 127, 127, 1, 1, 1, 157, 157, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 167, 167, 167, '+
'167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 127, 127, 127, 1, 1, 1, 242, 242, 242, 255, 255, 255, 255, 255, 255, 0, 0, 0, 167, 167, 167, 167, 167, '+
'167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 225, 225, 225, 253, 253, 253, 255, 255, 255, 255, 255, 255, 0, 0, 0, 167, 167, 167, 167, 167, '+
'167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 167, 167, 167, 167, 167, '+
'167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 167, 167, 167, 191, 191, '+
'191, 0, 0, 0, 200, 200, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 200, 200, 0, 0, 0, 191, 191, 191, 254, 254, '+
'254, 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, '+
'53, 254, 254, 254, 255, 255, 255, 254, 254, 254, 191, 191, 191, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, '+
'167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 191, 191, 191, '+
'254, 254, 254, 255, 255, 255';
end;
False: begin
loSize:= 822;
loImgStr:= '66, 77, 54, 3, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 3, 0, 0, 196, 14, 0, '+
'0, 196, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 254, 254, 254, 191, 191, 191, 167, 167, 167, 167, 167, 167, 167, '+
'167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, '+
'191, 191, 191, 254, 254, 254, 255, 255, 255, 254, 254, 254, 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '+
'0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53, 254, 254, 254, 191, 191, 191, 0, 0, 0, 200, 200, 200, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 200, 200, 200, 0, 0, 0, 191, 191, 191, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 0, 0, 0, 167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 0, 0, 0, 167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 0, 0, 0, 167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 0, 0, 0, 167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 0, 0, 0, 167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 0, 0, 0, 167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'0, 0, 0, 167, 167, 167, 167, 167, 167, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, '+
'0, 167, 167, 167, 191, 191, 191, 0, 0, 0, 200, 200, 200, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, '+
'255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 200, 200, 0, 0, 0, '+
'191, 191, 191, 254, 254, 254, 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '+
'0, 0, 0, 0, 0, 0, 53, 53, 53, 254, 254, 254, 255, 255, 255, 254, 254, 254, 191, 191, 191, 167, 167, 167, 167, 167, 167, '+
'167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, '+
'167, 191, 191, 191, 254, 254, 254, 255, 255, 255';
end;
end;
loImageCollun:= TImageCollun.Create(loSize, loImgStr);
try
Result:= loImageCollun.GetImageStr;
finally
loImageCollun.Free;
end;
end;
procedure THelperTcxGridDBColumn.SetSettings;
begin
HeaderGlyphAlignmentHorz:= taCenter;
with Options do
begin
FilteringPopup:= False;
Sorting:= False;
end;
PropertiesClassName:= 'TcxCheckBoxProperties';
with TcxCheckBoxProperties(Properties) do
begin
ImmediatePost:= True;
end;
end;
procedure THelperTcxGridDBColumn.TableViewFlagHeaderClick(Sender: TObject);
begin
TcxGridDBColumn(Sender).HeaderGlyph:= nil;
case TcxGridDBColumn(Sender).tag of
0: begin
TcxGridDBColumn(Sender).Tag:= 1;
TcxGridDBColumn(Sender).HeaderGlyph:= GetImage(True);
ChangesBoolValue(True);
end;
1: begin
TcxGridDBColumn(Sender).Tag:= 0;
TcxGridDBColumn(Sender).HeaderGlyph:= GetImage(false);
ChangesBoolValue(False);
end;
end;
end;
end.
- Implementação;
cxGridDBTableView.GetColumnByFieldName('SeuFieldBoolean').ChangesBool();
segunda-feira, 22 de dezembro de 2014
Anonymous Methods + Class Helper Delphi + Métodos de Class
Caros, mostrarei como otimizar a chamada dos seus formulários utilizando (Anonymous Methods + Class Helper Delphi + Métodos de Class);
- Crie uma unit, na seção type adicione;
TMetodo = reference to procedure(Form: TForm);
TFormsHelper = class helper for TForm
class function ShowF(Metodo: TMetodo): TModalResult;
end;
- Implementação;
class function TFormsHelper.ShowF(Metodo: TMetodo): TModalResult;
var
loForm: TForm;
begin
Result:= mrNone;
loForm:= Self.Create(Application);
with loForm do
begin
try
if Assigned(Metodo) then
Metodo(loForm);
ShowModal;
finally
Result:= ModalResult;
Free;
end;
end;
end;
- Para utilizar o método basta adicionar a unit ao seu form
- Exemplo;
procedure TMain.Button1Click(Sender: TObject);
begin
if TMeuForm.ShowF(procedure(Form: TForm)
begin
with TMeuForm(Form) do
begin
//Suas implementações, exemplo abaixo
//Edit1.Text:= 'Develop 001';
//Edit2.Text:= 'Develop 002';
//Edit3.Text:= 'Develop 003';
end;
end) = mrOk then ShowMessage('Salvou')
else ShowMessage('Cancelou');
end;
sábado, 20 de dezembro de 2014
Anonymous Methods + Class Helper Delphi
- Crie uma unit, na seção type adicione;
TMetodoDataSet = reference to procedure(Table: TDataSet);
TDataSetHelper = class helper for TDataSet
procedure Eoff(Metodo: TMetodoDataSet);
end;
- Implementação;
{ TDataSetHelper }
procedure TDataSetHelper.Eoff(Metodo: TMetodoDataSet);
begin
DisableControls;
try
First;
while not Eof do
begin
Metodo(Self);
Next;
end;
finally
EnableControls;
end;
end;
- Para utilizar o método basta adicionar a unit ao seu form
- Exemplo;
with FDMemTable1 do
begin
with FieldDefs do
begin
Add('cod', ftInteger);
Add('nome', ftString, 20);
end;
CreateDataSet;
AppendRecord([1, 'Develop 001']);
AppendRecord([2, 'Develop 002']);
AppendRecord([3, 'Develop 003']);
AppendRecord([4, 'Develop 004']);
end;
- Exemplo:
FDMemTable1.eoff(procedure(Table: TDataSet)
begin
ShowMessage(Table.FieldByName('nome').AsString)
end)
Assinar:
Postagens (Atom)