NULL procedure TtableCopiaRegistro(Origem, Destino: Ttable);beginwith TabelaOrig do begin for i := 0 to FieldCount -1 do if not Fields[i].IsNull then TabelaDest.Fields[i].Assign(Fields[i]); end;end; // Evento OnCreate do Form procedure TForm1.FormCreate(Sender: TObject); var Senha : String; OK : Boolean; Tentativa : integer; begin Tentativa := 0; OK := False; while (Tentativa < 3) do begin InputQuery(Digite a sua senha, Voce tem + IntToStr(3 - Tentativa) + tentativas, senha); if (senha = Senha) then begin OK := True; Break; end; Inc(Tentativa); end; if not OK then begin ShowMessage(Tentativas excedidas. Pressione OK para terminar.); Application.Terminate; end; end; {Quando uso este recurso nas minhas aplicacoes eu consigo reduzir em muito o tempo de carregamento do software, sendo assim, resolvi partilhar com todos.E simples, baseada em uma funcao (FormExiste), que verifica se um form (MDIChild) ja existe na memoria. Se existir ele somente da o foco ao mesmo, senao ele o cria e o deixa na tela pronto para funcionar...Deixando de conversa, vamos ao codigo!}//Funcao de reconhecimento de MDIChilds function FormExiste(NomeJanela : TForm) : Boolean;//Funcao declarada//Implementando a funcaofunction TForm1.FormExiste (NomeJanela : TForm) : Boolean; var i : integer;beginformexiste := false;for i := 0 to ComponentCount -1 do if Components[i] is TForm then if TForm(Components[i]) = NomeJanela then FormExiste := true;end;{Para fazer uso correto da funcao voce deveseguir o exemplo do procedimento abaixo}procedure TForm1.Button1Click(Sender: TObject);beginif FormExiste(frmAlunos) = false then begin Screen.Cursor := crhourGlass; Form2 := TForm2.Create(Self); Screen.Cursor := crDefault; endElse if FormExiste(Form2 then begin Form2.WindowState := wsNormal; Form2.BringToFront; Form2.SetFocus; end;end;{Certo?Espero ter ajudado!Evaldo Barbosaevaldobarbosa@hotmail.com} {No delphi podemos ler um campo armazenado numa tabela, alterando seu tipo, ou seja, podemos ler um campo numerico, por exemplo, como um campo string, e vice-versa. Este recurso e util e pratico, pois permite maior agilidade e menos programacao.Exemplo:Se quisermos converter um campo numerico armazendo em Tabela1 para string, armazenando-o na variavel S, podemos fazer o seguinte:}S:=tabela1.camponumerico.asstring;{Pode-se utilizar as seguintes conversoes:Asboolean - Converte para valores booleanos (logicos)AsDateTime - Converte para Data/HoraAsFloat - Converte para valores numericos de ponto flutuanteAsInteger - Converte para valors numericos inteirosAsString - Converte para strings de caracteres} Memo.onchange := memo1Change;procedure TForm1.Memo1Change(Sender: TObject);begin panel1.caption:='Conteudo alterado';end; Function HexToInt(const HexStr: string): longint;var iNdx: integer; cTmp: Char;beginResult := 0;for iNdx := 1 to Length(HexStr) do begin cTmp := HexStr[iNdx]; case cTmp of '0'..'9': Result := 16 * Result + (Ord(cTmp) - $30); 'A'..'F': Result := 16 * Result + (Ord(cTmp) - $37); 'a'..'f': Result := 16 * Result + (Ord(cTmp) - $57); else raise EConvertError.Create('Illegal character in hex string'); end; end;end; ValorReal : Real;ValorString : String;ValorReal := 5;ValorString := floattostrf(ValorReal,ffFixed,18,2); {Para criar uma janela nao retangular, voce deve criar uma Regiao do Windows e usar a funcao da API SetWindowRgn, desta maneira (isto funciona apenas em D2/D3):}var hR : THandle;begin // Cria uma Regiao eliptica hR := CreateEllipticRgn(0,0,100,200); SetWindowRgn(Handle,hR,True);end; Function JOemToAnsiStr(const OemStr: string): string; begin SetLength(Result, Length(OemStr)); if Length(Result) > 0 then {$IFDEF WIN32} OemToCharBuff(PChar(OemStr), PChar(Result), Length(Result)); {$ELSE} OemToAnsiBuff(@OemStr[1], @Result[1], Length(Result)); {$ENDIF} end; Exemplo var Variavel: String; begin //Pode pegar por exemplo de uma variavel DOS q venha de um DBF e converter para o padrao Win Variavel := JOemToAnsiStr('Texto em DOS');... P. 1140 Na