Apuntes
sobre Delphi
Descargar (poner a cero) un objeto de tipo TPicture.-
a) Definir un variable de tipo TPicture: Var Imagen: TPicture;
b) Crear un objeto del mismo tipo: Imagen:= TPicture.Create;
c) Asignar al objeto a descargar dicho objeto: CGrafico.Picture:=Imagen;
d) Liberar la memoria: Imagen.Free;
Procedimiento para limpiar el Canvas de un objeto.- (ver también BorrarCanvas)
procedure TFicha1.BorrarLienzo(Color:Integer);
begin
Self.Canvas.Brush.Color:=Color;
Self.Canvas.Rectangle(0,0,ClientWidth,ClientHeight);
end;
Debemos declarar en la parte Interface el procedimiento: BorrarLienzo(Color:Integer);
Procedimiento para controlar la entrada de datos en un control EDIT.-
El código 8 corresponde al borrado de caracteres hacia atrás.
El código 13 corresponde a la tecla Enter.
" 27 a la tecla ESC.
procedure TForm1.EClaveKeyPress(Sender: TObject; var Key: Char);
begin
If key in ['0'..'9','A'..'Z','a'..'z',#8] then Key:=Key Else Key:=Chr(0);
end;
Procedimiento para controlar el nombre de un fichero.-
Var nombre,C: String[8];
i : Byte;
Letra : String[1];
begin
Registro.Obs:='';Registro.Clave:='';
nombre:='';i:=0;Letra:='';C:='';
nombre:=InputBox('Escriba el nombre del archivo:','','');
For i:=1 to 8 do Begin
Letra:=Copy(nombre,i,1);
If (Letra='/') Or
(Letra='\') Or
(Letra=':') Or
(Letra='*') Or
(Letra='') Or
(Letra='?') Or
(Letra='"') Or
(Letra='<') Or
(Letra='>') Or
(Letra='|')
Then Letra:='#';
C:=C + Letra;
End;
nombre:=C;
Procedimiento para controlar la entrada de números enteros.-
CadL:=InputBox('Longitud de la linea','Introducir:','');
For i:=1 to Length(CadL)
do begin
Letra:=Copy(CadL,i,1);
If (Letra='0') Or
(Letra='1') Or
(Letra='2') Or
(Letra='3') Or
(Letra='4') Or
(Letra='5') Or
(Letra='6') Or
(Letra='7') Or
(Letra='8') Or
(Letra='9')
Then C:=C + Letra;
end;
If C<>'' then CadL:=C else CadL:='100';
Longitud:=StrToInt(CadL);
Función que permite obtener una cadena (string) de un nmero real.-
function RealToStr(numero: Real;NumD: Byte): String;
var ParteE, ParteD: String;
Dig, n, L : Integer;
begin
ParteE:=IntToStr(Trunc(numero));
if (numero> -1) and (numero < 0) then ParteE:='-'+ParteE;
Case NumD of
0: Dig:=0;
1: Dig:=Abs(Trunc(10*Frac(numero)));
2: Dig:=Abs(Trunc(100*Frac(numero)));
3: Dig:=Abs(Trunc(1000*Frac(numero)));
end;
L:=Length(IntToStr(Dig));
if (NumD>0) and (NumD-L>0) then for n:=1 to (NumD-L) do ParteD:=ParteD+'0';
if (NumD>0) then ParteD:=ParteD+IntToStr(Dig) else ParteD:='';
if ParteD<>'' then Result:=ParteE+'.'+ParteD else Result:=ParteE;
end;
Procedimiento que permite limpiar el Canvas de una ficha.-
procedure BorrarCanvas(Ficha: TForm;Color: Integer);
begin
Ficha.Canvas.Brush.Color:=Color;
Ficha.Canvas.Rectangle(0,0,Ficha.ClientWidth,Ficha.ClientHeight);
end;
Procedimiento para ordenar una lista (selección del mínimo) .-
var i, j, posicion: Integer;
MinLinea : String;
begin
for i:=0 to Listas.Items.Count - 2
do begin
MinLinea:=Listas.Items[i];
posicion:=i;
for j:=i+1 to Listas.Items.Count - 1
do begin
if MinLinea>Listas.Items[j] then begin
MinLinea:=Listas.Items[j];
posicion:=j;
end;
end;
Listas.Items[posicion]:=Listas.Items[i];
Listas.Items[i]:=MinLinea;
end;
end;
Convertir bitmap a jpeg (TI de Borland) .-
uses
JPEG;
procedure TForm1.Button1Click(Sender: TObject);
var
MyJPEG : TJPEGImage;
MyBMP : TBitmap;
begin
{ Convierte BMP en JPEG }
MyBMP := TBitmap.Create;
with MyBMP do
try
LoadFromFile('MiImagenBitmap.BMP');
MyJPEG := TJPEGImage.Create;
with MyJPEG do begin
Assign(MyBMP);
SaveToFile('ImagenConvertida.JPEG');
Free;
end;
finally
Free;
end;
end;
Convertir jpeg a bitmap (TI de Borland).-
uses
JPEG;
procedure TForm1.Button1Click(Sender: TObject);
var
MyJPEG : TJPEGImage;
MyBMP : TBitmap;
begin
{ Convierte JPEG en BMP }
MyJPEG := TJPEGImage.Create;
with MyJPEG do begin
LoadFromFile('MiImagenJpeg.JPEG');
MyBMP := TBitmap.Create;
with MyBMP do begin
Width := MyJPEG.Width;
Height := MyJPEG.Height;
Canvas.Draw(0,0,MyJPEG);
SaveToFile('ImagenConvertida.BMP');
Free;
end;
Free;
end;
end;
¿Cómo puedo apagar el ordenador o hacer un reset desde mi programa?
if ExitWindowsEx (0,0) = 0 then showmessage ('No puedo reiniciar Windows); ??
Más bien devuelve un valor True o False!!!!
if ExitWindowsEx (1,0) = 0 then showmessage ('No puedo cerrar el ordenador');
if ExitWindowsEx (2,0) = 0 then showmessage ('No puedo reiniciar el ordenador');
procedimiento para saber la posición del cursor en un Tmemo.-
var Lpos,Cpos,LineLength:integer;
begin
Lpos := SendMessage(memo1.Handle,EM_LINEFROMCHAR,Memo1.SelStart,0);
Cpos := SendMessage(memo1.Handle,EM_LINEINDEX,Lpos,0);
LineLength := SendMessage(memo1.handle, EM_LINELENGTH, Cpos, 0);
CPos := Memo1.SelStart-CPos;
Label1.Caption:=IntToStr(Lpos); //Linea
Label2.Caption:=IntToStr(Cpos); //Columna
Label3.Caption:=IntToStr(LineLength) //Longitud de la linea
end;
Imprimir un BitMap.-
procedure TForm1.Button1Click(Sender: TObject);
var ScaleX, ScaleY: Integer;
R: TRect;
begin
Printer.BeginDoc;
with Printer do
try
ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
R := Rect(0, 0, Image1.Picture.Width * ScaleX, Image1.Picture.Height * ScaleY);
Canvas.StretchDraw(R, Image1.Picture.Graphic);
finally
EndDoc;
end;
end;
Procedimiento para leer la información sobre la memoria.-
procedure TMemory.GetInfo;
var
SI :TSystemInfo;
MS :TMemoryStatus;
begin
ZeroMemory(@MS,SizeOf(MS));
MS.dwLength:=SizeOf(MS);
GlobalMemoryStatus(MS);
MemoryLoad:=MS.dwMemoryLoad;
PhysicalTotal:=MS.dwTotalPhys;
PhysicalFree:=MS.dwAvailPhys;
VirtualTotal:=MS.dwTotalVirtual;
VirtualFree:=MS.dwAvailVirtual;
PageFileTotal:=MS.dwTotalPageFile;
PageFileFree:=MS.dwAvailPageFile;
ZeroMemory(@SI,SizeOf(SI));
GetSystemInfo(SI);
AllocGranularity:=SI.dwAllocationGranularity;
MaxAppAddress:=DWORD(SI.lpMaximumApplicationAddress);
MinAppAddress:=DWORD(SI.lpMinimumApplicationAddress);
PageSize:=DWORD(SI.dwPageSize);
end;
Procedimiento para ejecutar o lanzar una aplicación.-
procedure TForm1.SBLanzarClick(Sender: TObject);
var CadNomP: String;
NomP : Array[0..1023] of Char;
begin
CadNomP:=LELanzar.Text;
StrPCopy(NomP, CadNomP);
try
WinExec(NomP, 1);
except on E:Exception do ShowMessage('Error: '+E.message);
end;
end;
Procedimiento para controlar la entrada de números en un control TEdit.-
KeyPreview debe estar en true
procedure TForm2.EExpedienteKeyPress(Sender: TObject; var Key: Char);
begin
if key in ['0'..'9','E','-', '+', #46, #8] then key:=key else key:=chr(0);
end;