procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_RETURN then
sendmessage(handle,wm_nextdlgctl,0,0);
end;
atau juga bisa membuat sendiri seperti dibawah ini :
Function TFPelangganEntry.NextkeyEdit(var Key: Word; namakomponen : TEdit): Boolean;
begin
if Key = VK_RETURN then
begin
if namakomponen.Enabled = True then
namakomponen.SetFocus;
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8,'.',',']) then
Begin
key := #0;
End;
end;
procedure ListFileDir(Path: string; FileList: TStrings);
var
SR: TSearchRec;
begin
if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
begin
repeat
if (SR.Attr <> faDirectory) then
begin
FileList.Add(SR.Name);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListFileDir('C:\WINDOWS\', ListBox1.Items);
end;
procedure SetGridColumnWidths(Grid: Tdbgrid);
const
DEFBORDER = 10;
var
temp, n: Integer;
lmax: array [0..30] of Integer;
begin
with Grid do
begin
Canvas.Font := Font;
for n := 0 to Columns.Count - 1 do
//if columns[n].visible then
lmax[n] := Canvas.TextWidth(Fields[n].FieldName) + DEFBORDER;
grid.DataSource.DataSet.First;
while not grid.DataSource.DataSet.EOF do
begin
for n := 0 to Columns.Count - 1 do
begin
//if columns[n].visible then begin
temp := Canvas.TextWidth(trim(Columns[n].Field.DisplayText)) + DEFBORDER;
if temp > lmax[n] then lmax[n] := temp;
//end; { if }
end; {for}
grid.DataSource.DataSet.Next;
end; { while }
grid.DataSource.DataSet.First;
for n := 0 to Columns.Count - 1 do
if lmax[n] > 0 then
Columns[n].Width := lmax[n];
end; { With }
end; {SetGridColumnWidths }
procedure TForm1.Button1Click(Sender: TObject);
begin
SetGridColumnWidths(dbgrid3);
end;
//...
private
OldGridProc: TWndMethod;
procedure GridWindowProc(var Message: TMessage);
//...
procedure TForm1.FormCreate(Sender: TObject);
begin
OldGridProc := DBGrid1.WindowProc;
DBGrid1.WindowProc := GridWindowProc;
end;
procedure TForm1.GridWindowProc(var Message: TMessage);
var
Pos: SmallInt;
begin
OldGridProc(Message);
if Message.Msg = WM_VSCROLL then //or WM_HSCROLL
begin
Pos := Message.WParamHi; //Scrollbox position
Table1.RecNo := Pos;
end;
end;
Function ListGetAt(List: string; const Position: integer; const Delimiter: string = ';'): string;
var
i, NP, DL: integer;
Begin
NP := 1;
DL := Length(Delimiter);
for i := 1 to Position do
Begin
List := Copy(List, NP, Length(List)-NP+1);
NP := Pos(Delimiter, List)+DL;
if i = Position then
begin
if Pos(Delimiter, List) = 0 then Break;
Delete(List, NP-DL, Length(List)-(NP-DL-1));
End Else
if NP = DL then
begin
List := '';
Break;
end;
End;
Result := List;
End;
Function ListSetAt(List: string; const Position: integer; const Value: string; const Delimiter: string = ';'): string;
var
i, NP, DL: integer;
BegStr, EndStr: string;
Begin
NP := 1;
DL := Length(Delimiter);
BegStr := '';
EndStr := '';
For i := 1 to Position do
Begin
if i > 1 then
BegStr := BegStr+Copy(List, 1, Pos(Delimiter, List)+DL-1);
List := Copy(List, NP, Length(List)-NP+DL);
NP := Pos(Delimiter, List)+DL;
if (NP = DL) and (i < Position) then
Begin
List := List + Delimiter;
NP := Pos(Delimiter, List)+DL;
End;
if i = Position then
Begin
if Pos(Delimiter, List) = 0 then
Break;
EndStr := Copy(List, NP-DL, Length(List)-(NP-DL-1));
End;
End;
Result := BegStr + Value + EndStr;
End;
Function ListLen(List: string; const Delimiter: string): integer;
var DL: integer;
Begin
DL := Length(Delimiter);
Result := Ord(List > '');
While Pos(Delimiter, List) > 0 do
Begin
Delete(List, 1, Pos(Delimiter, List) + DL-1);
Inc(Result);
End;
End;
procedure ProcessData(namaSTG: TStringGrid; Value1, Value2, Value3, Value4, Value5, Value6, value7, value8, value9, value10, value11: string);
Begin
namaSTG.Cells[0,Barisimport]:= (Value1);
namaSTG.Cells[1,Barisimport]:= (Value2);
namaSTG.Cells[2,Barisimport]:= (Value3);
namaSTG.Cells[3,Barisimport]:= (Value4);
namaSTG.Cells[4,Barisimport]:= (Value5);
namaSTG.Cells[5,Barisimport]:= (Value6);
namaSTG.Cells[6,Barisimport]:= (Value7);
namaSTG.Cells[7,Barisimport]:= (Value8);
namaSTG.Cells[8,Barisimport]:= (value9);
namaSTG.Cells[9,Barisimport]:= (Value10);
namaSTG.Cells[10,Barisimport]:= (value11);
End;
procedure TForm1.Button1Click(Sender: TObject);
Var
MyCSVData: TStringList;
begin
if OpenDialog1.Execute Then
Begin
MyCSVData := TStringList.Create;
MyCSVData.LoadFromFile(OpenDialog1.FileName);
Barisimport := 0;
For Barisimport := 1 to MyCSVData.Count-1 do
Begin
ProcessData(StgHeader,
ListGetAt(MyCSVData[Barisimport -1], 1),
ListGetAt(MyCSVData[Barisimport -1], 2),
ListGetAt(MyCSVData[Barisimport -1], 3),
ListGetAt(MyCSVData[Barisimport -1], 4),
ListGetAt(MyCSVData[Barisimport -1], 5),
ListGetAt(MyCSVData[Barisimport -1], 6),
ListGetAt(MyCSVData[Barisimport -1], 7),
ListGetAt(MyCSVData[Barisimport -1], 8),
ListGetAt(MyCSVData[Barisimport -1], 9),
ListGetAt(MyCSVData[Barisimport -1], 10),
ListGetAt(MyCSVData[Barisimport -1], 11));
StgHeader.RowCount := Barisimport + 2;
End;
End;
End;
function DirectoryIsEmpty(Directory: string): Boolean;
var
SR: TSearchRec;
i: Integer;
begin
Result := False;
FindFirst(IncludeTrailingPathDelimiter(Directory) + '*', faAnyFile, SR);
for i := 1 to 2 do
if (SR.Name = '.') or (SR.Name = '..') then
Result := FindNext(SR) <> 0;
FindClose(SR);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if DirectoryIsEmpty('C:\test') then
Label1.Caption := 'empty'
else
Label1.Caption := 'not empty';
end;
function DaysInMonth: Integer;
var
Year, Month, Day: Word;
begin
DecodeDate(Now, Year, Month, Day);
Result := MonthDays[IsLeapYear(Year), Month];
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(DaysInMonth));
end;
Function TForm1.konversitanggalkemenit(Dari, Sampai : Tdatetime) : Double;
Var Hasil_Temp, Hasil_Selisih, Hasil_belakangkoma : Double;
Hasil_Str_Temp : String;
menit : Ttime;
Begin
Hasil_Selisih := Sampai - dari;
if Hasil_Selisih >= 0.0000000000000001 then
Begin
hasil_temp := ((Hasil_Selisih * 24 * 60));
Result := Trunc(hasil_temp);
End Else
Begin
menit := Timeof(Sampai) - TimeOf(dari);
Result := menit;
End;
End;
// Cara memanggilnya
Edit3.Text := FloatToStr(konversitanggalkemenit(StrToDateTime(EdtDari.text), StrToDateTime(EdtSampai.text)));
Function konversitanggalkejam(Dari, Sampai : Tdatetime) : Double;
Var Hasil_Temp, Hasil_Selisih, Hasil_belakangkoma : Double;
Hasil_Str_Temp : String;
Jam : Ttime;
Begin
Hasil_Selisih := Sampai - dari;
if Hasil_Selisih >= 0.0001 then
Begin
hasil_temp := ((Hasil_Selisih * 24) + 0.000000001);
Hasil_Str_Temp := FormatFloat('0#.00', hasil_temp);
if length(Hasil_Str_Temp) >= 3 then
begin
Hasil_belakangkoma := StrToFloat(copy(Hasil_Str_Temp,4,2));
Hasil_belakangkoma := (Hasil_belakangkoma * 0.6) /100;
Hasil_Str_Temp := FormatFloat('0#.00', Hasil_belakangkoma);
Result := Trunc(hasil_temp) + Strtofloat(Hasil_Str_Temp);
end else
begin
Result := Trunc(hasil_temp);
end;
End Else
Begin
Jam := Timeof(Sampai) - TimeOf(dari);
Result := Jam;
End;
End;
Cara memanggilnya :
Edit3.Text := FloatToStr(konversitanggalkejam(StrToDateTime(EdtDari.text), StrToDateTime(EdtSampai.text)));