sábado, 7 de novembro de 2009

Mostrando a Data a Hora e o nome da Maquina em um StatusBar



Insira um statusbar e um timer no formulario


Dê dois cliques no status bar e configure os panels


De dois cliques no timer e digite.....

StatusBar.Panels[3].Text := mostrahora();

StatusBar.Panels[1].Text := mostradata();

StatusBar.Panels[2].Text := 'Máquina ' + NomeDoComputador();


Colocar os nomes das funçoes abaixo de

public
{ Public declarations }
end;
function MyData(Data: TDate): String;
function mostradata: string;
function mostrahora: string;
function NomeDoComputador (): string;



funçoes estas que deverao estar abaixo do implementation do formulario

implementation

function mostrahora: string;
begin
mostrahora := timetostr(time);
end;


// funçao mostrar a data

function mostradata: string;
var
dthoje: TDatetime;
diasemana: integer;
strdiasemana: string;
begin
dthoje := date;
diasemana := dayofweek(dthoje);
case diasemana of
1: strdiasemana := 'Domingo';
2: strdiasemana := 'Segunda-feira';
3: strdiasemana := 'Terça-feira';
4: strdiasemana := 'Quarta-feira';
5: strdiasemana := 'Quinta-feira';
6: strdiasemana := 'Sexta-feira';
7: strdiasemana := 'Sábado';
end;
mostradata := strdiasemana+' '+datetostr(dthoje);
end;

// Retorna o nome do computador.

function NomeDoComputador (): string;const
MAX_COMPUTER_LENGTH = 30;
var
pNome : PChar;
len : DWord;beginResult := '';
trylen := MAX_COMPUTER_LENGTH + 1;
GetMem(pNome,len);
if GetComputerName(pNome, len) then
begin
Result := pNomeend else beginResult := 'NÃo foi possivel obter o nome deste computador!';
end;
inallyFreeMem(pNome, len);
end;
end;

Sair de um formulario ao pressionar a tecla ESC

Coloque no eventos do formulario no objecto inspector

onkeydown => clique e insira este codigo
If Key = VK_ESCAPE Then => traduzindo se a tecla (If Key) = ESC faça (then)
Close; => fechar

Sua procedure ira ficar assim.....

procedure Tprincipal.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
If Key = VK_ESCAPE Then
Close;

end;

Graças ao nosso amigo diemes falta um detalhe..

clique no formulario e na opção keypreview coloque true se estiver false nao funciona..

grato

sexta-feira, 6 de novembro de 2009

Colocando as horas do pc em um dbedit


Coloque um componente
timer no formulario
e um dbedit

Clique no Dbedit pra ser criado a procedure
ai digite entre o

begin

e

end; assim => dbedit.Text:= timetostr(now); vai ficar igual abaixo ao compilar ver a hora do sistema no componente

procedure Tcad_advogado1.Timer1Timer(Sender: TObject);
begin
dbedit.Text:= timetostr(now);
end;

Pesquisando dados atravez de um EDIT - Locate ou usando comando LIKE

Colocando no onChange do componente....


procedure Tcons_advogado1.Edit2Change(Sender: TObject);
begin
if Edit2.Text <> '' then
begin
Query.Locate(campo da tabela,edit2.Text,[lopartialkey,locaseinsensitive]);
end
end;

obs... Tem de coloca no uses o db
esta eh uma maneira


outro exemplo que passei a usar apos a dica de um professor eh

procedure Tcons_advogado1.Edit1Change(Sender: TObject);
begin
if componente.Text <> '' then
begin
With query do
begin
if componente.Text <> '' then
Close;
Sql.Clear;
Sql.Add('Select *');
Sql.Add('from tabela);
Sql.Add('where campo);
begin
Sql.Add('like''%' + componente.Text + '%'' ');
Sql.Add('order by campo a escolher);
Open;
end;
end;
end;
end;

Abrindo um Formulario

Exitem duas maneiras que eu sei, talvez existam outras, mas as qeu eu adquiri conhecimento sao duas ...

uma abre varios formularios e a outra se nao fechar-mos uma nao tem como abrir outro formulario...

exemplo 1
procedure Tpr_agenda.ToolButton6Click(Sender: TObject);
begin
application.CreateForm(TConsu_agenda, Consu_agenda);
Consu_agenda.show;
end;


exemplo 2 - nao se consegue abrir outro form se ja estiver outro aberto

procedure Tprincipal.Menu1Click(Sender: TObject);
begin
Menu_geral := TMenu_geral.Create(nil);
Try
Menu_geral.Showmodal;
finally
freeandnil(Menu_geral);
end;
end;


Claro que os nomes dos arquivo deverao ser modificados de acordo com seus programas.

Agora o segundo exemplo tem algo a ver com liberaçao dos form da memoria ou nao??

Tecla ENTER de campo em campo do formulario...

Me deparei com uma situação até logica ao testar o programa, precisava que o Enter fosse de campo em campo dentro do formulario e como cosneguir isso..

Colocar no evento do formulario on key press

If Key = #13 Then
Begin
If HiWord(GetKeyState(VK_SHIFT)) <> 0 then
perform(WM_NEXTDLGCTL, 1, 0)
else
perform(WM_NEXTDLGCTL, 0, 0);
Key := #0
end;

porem mesmo colocando este detalhe nao consegui que a Tecla Enter fosse de campo em campo..

Faltava alguma coisa .....

No objecto Inspector do formulario faltava colocar True no KeyPreview, apos isso funcionou perfeitamente ...

porem outro detalhe ...........ao pressionar Enter nao seguia uma sequencia correta conforme eu queria que fosse pulava de campo em campo mas sem uma sequencia correta..

Isto se resolveu ao ser configurado no objeto inspector

TabOrder = sequencia que seguira de campo em campo ao ser presssionado o Enter e no
TabStop = true se ker ou nao que o enter va ate o campo seguinte conforme a numeração do Tab Order

Bom eh isso no proximo sera algo semelhante mas em um formulario onde preciso usar o enter , mas nao posso usar esse codigo..

Bom conforme prometido aqui vai outra maneira da tecla ENTER ir de campo em campo apos vc marcar o TAB Order, mas essa dica veio de um professor que me ensinou .. grande amigo ..

no evento on show do formulario coloque .........

procedure Tcad_processo_obs1.FormShow(Sender: TObject);
begin
Application.OnMessage := ProcessaMsg;
end;


cole este codigo mais abaixo .............

procedure Tcad_processo_obs1.ProcessaMsg(var Msg: TMsg; var Handled: Boolean);
beg
inif (Msg.message = WM_KEYDOWN) then
if not (Screen.ActiveControl is TCustomMemo) and not (Screen.ActiveControl is TButtonControl) then
begin
if not (Screen.ActiveControl is TCustomControl) then
begin
if Msg.wParam = VK_DOWN then
Msg.wParam := VK_TAB;
if Msg.wParam = VK_UP then
begin
Msg.wParam := VK_CLEAR;
Screen.ActiveForm.Perform(WM_NEXTDLGCTL,1,0);
end;
end;
if Msg.wParam = VK_RETURN then
Msg.wParam := VK_TAB;
end;
end;


coloque junto das procedures esta linha

procedure ProcessaMsg(var Msg: TMsg; var Handled: Boolean);
antes do ..........
private { Private declarations }
public { Public declarations }
end;

SGP - SISTEMA DE GERENCIAMENTO DE PROCESSOS ADVOCATICIOS

Cadastro de Processos






Tela de Cadastro de Compromissos



Tela de Consulta de Compromissos



Tela para anexar Cliente ao processo



Tela de Cadastro de Processo

Tela de Cadastro de Cliente

Cadastro de Advogados

Sistema de Gerenciamento de Processos Advocatícios
Este projeto se baserá em Cadastro de Processos advocatícios
Onde conterá...
Cadastro do Processo
Advogados do processo
Clientes do Processo
Honorários dos Clientes
Parcelamento dos Honorários
Compromissos
Depoimento do Cliente junto ao Advogado
Dentre outros detalhes....

Agradecimento

Bom galera, este blog se dedicará à programação em delphi e BD mysql, claro que se surgir algo novo colocarei aqui, um agradecimento aos professores do Brasil todo, como meus amigos ...

Paulo Costa , Ivan Cesar, Italo Gomes aka MerriT , analista_cas, Jack chan , Marco, Jackson, Felipe - Zerobit , Leo Wolmexx, Ricardo_blk, Filipp´z, TECMONTER, Lucas - Win32, hermínio jr. , Rafael Vinícius, Active delphi RRAAFFAA, claudio Delphi , Diemes e dentre outros que provavelmente eu devo ter esquecido mas agradeço a compreeenção de todos e todas as dicas e paciencia aos iniciantes como eu...


Lembrando que todas as dicas se nao foram retiradas da net foram passadas pelos professores afinal ningeum nasce sabendo, nada se cria tudo se copia e aprende-se..


roberto