Merubah Setiap awal kata menjadi huruf besar pada TEdit

Dalam keadaan tertentu kita memerlukan bahwa setiap kata yang diinput pada TEdit harus huruf besar pada huruf pertamanya. Seperti misalnya dalam penulisan nama orang, nama tempat dll. Terkadang operator lupa menekan shift, sehingga terjadi kekeliruan input.

Prosedur dibawah ini akan secara otomatis merubah huruf pertama setiap kata menjadi huruf besar.
Pada event OnChange pada TEdit, tuliskan kode berikut:

procedure TForm1.Edit1Change(Sender: TObject);
var
  OldChange: TNotifyEvent;
  OldStart: Integer;
begin
  with (Sender as TEdit) do
  begin
    OldChange := OnChange;
    OnChange  := nil;
    OldStart  := SelStart;
    if ((SelStart > 0) and (Text[SelStart - 1] = ‘ ‘)) or (SelStart = 1) then
    begin
      SelStart  := SelStart – 1;
      SelLength := 1;
      SelText   := AnsiUpperCase(SelText);
    end;

    OnChange := OldChange;
    SelStart := OldStart;
  end;

Membuat ODBC Data Source saat run-time dengan Delphi

Apabila aplikasi database yang kita buat dipindahkan atau diinstall di komputer lain, maka kita mesti masuk ke kontrol panel untuk membuat Data Source agar aplikasi yang kita buat dapat berjalan. Tetapi ini akan menyulitkan, apabila user tidak mengerti tentang hal itu. Apalagi nama Data Source tidak diketahui dan mungkin saja suatu saat kita sendiri lupa karena banyak aplikasi yang kita buat. 

Berikut ini satu procedure untuk membuat ODBC Data Source yang menggunakan database Microsoft Access.
Const
   ODBC_ADD_SYS_DSN = 4;
type
  TSQLConfigDataSource = function( hwndParent: HWND;
  fRequest: WORD;
  lpszDriver: LPCSTR;
  lpszAttributes: LPCSTR ) : BOOL; stdcall;
Procedure BuatODBCDataSource(stDsn,stDatabase,stPath:String);
var pFn: TSQLConfigDataSource;
    hLib: LongWord;
    strDriver: string;
    strHome: string;
    strAttr: string;
    strFile: string;
    fResult: BOOL;
    ModName: array[0..MAX_PATH] of Char;
    srInfo : TSearchRec;
begin
   {Windows.GetModuleFileName( HInstance, ModName, SizeOf(ModName));
   strHome := ModName;
   while (strHome[length(strHome)] <> ‘\’) do
         Delete(strHome, length(strHome), 1);
   strfile :=strHome + ‘Dta.MDB’;}
   strFile := stpath+’\'+stDatabase; 
   hLib := LoadLibrary( ‘ODBCCP32′ );  
   if( hLib <> NULL ) then
   begin
    @pFn := GetProcAddress( hLib, ‘SQLConfigDataSource’ );
    if( @pFn <> nil ) then
      begin
        strDriver := ‘Microsoft Access Driver (*.mdb)’;
        strAttr := Format(‘DSN=’+stDsn+#0+’DBQ=%s’+#0+’Exclusive=1′+#0+#0+#0,[strFile] );
        fResult := pFn( 0, ODBC_ADD_SYS_DSN, @strDriver[1], @strAttr[1] );
        if(fResult = false ) then
            ShowMessage( ‘Pembuatan ODBC Data Source gagal!’ );
        if( FindFirst( strFile, 0, srInfo ) <> 0 ) then
        begin
          strDriver := ‘Microsoft Access Driver (*.mdb)’;
          strAttr := Format( ‘DSN=’+stDsn+#0+ ‘DBQ=%s’+#0+ ‘Exclusive=1′+#0+#0+ ‘CREATE_DB=”%s”‘#0+#0, [strFile,strFile] );
          //fResult := pFn( 0, ODBC_ADD_SYS_DSN, @strDriver[1], @strAttr[1] );
          fResult := pFn( 0, ODBC_ADD_DSN, @strDriver[1], @strAttr[1] );
          if( fResult = false ) then
              ShowMessage( ‘PPembuatan ODBC Data Source gagal!’ );
        end;
        //FindClose(srInfo);
      end;
      FreeLibrary(hLib);
    end else
    begin
     ShowMessage(‘tidak berhasil membuka file ODBCCP32.DLL’);
    end;
end;
Contoh penggunaan
Var
 stPath,stDatabase,stdsn:String;
Begin
  …
  Chdir(ExtractFilePath(Application.EXEName));
 GetDir(0,stpath);
  stDatabase:=’Dataku.mdb’;
  stDsn:=’NamaDSODBC’;
BuatODBCDataSource(stDsn,stDatabase,stPath:String);
End;