Arsip: (ask) Fokus ke TEdit yang belum diisi/kosong pada tab?

 
user image
more 14 years ago

dr4cul453xy

Hi teman2, Saya mau tanya nih.. saya buat suatu form yang banyak banget pake TEdit(TCombobox juga sebenarnya termasuk), sehingga saya pisahin pake TabControl. oleh karena itu, saya buatin Fungsi (Sourcenya saya dapet dari program Tips yang ada di forum ini :lol:) untuk mengecek property text pada semua TEdit Apakah masih ada property text-nya yang kosong. Tapi masalahnya, ga bisa langsung Fokus ke TEdit yang property Text-nya masih kosong, sebab apabila TEdit yang kosong (misal TEdit yang kosong di TAB1, sedang focus control masih di TAB2) maka akan muncul pesan Access violation. Btw, fungsi yang saya bikin kaya dibawah ini (berada dalam Unit lain/ custFunc.pas)
function AllDataFill(AParent : TCustomForm);boolean;
var
  I:integer;
begin
  result := false;
  with AParent do
  for i:= 0 to componentCount-1 do
   if (component[i] as TEdit) then
     if (TEdit(Components[i].text = '') then begin
     result := false
     //Component[i].setFocus;  <-- Bila ikut dijalankan menyebabkan error
     Exit;
     end
     else result := true;
   end;
  end;
end;
Fungsi itu saya gunakan untuk validasi (agar ga ada nilai kosong/'')sebelum menyimpan data ke database. pemanggilannya :

uses
  custFunct;
......
var
  frmReservation : TfrmReservation;
implementation
......
procedure TFrmReservation.btnSaveClick(Sender:TObject);
begin
  if not allDataFill(self) then begin
     MessageBox(handle,'Ada data kosong!','Info',MB_ICONINFORMATION);
     Exit;
  end;
   ......
   //kode untuk menyimpan ke database
   .......
end;
Saya coba untuk mencari parent dari komponen TEdit yang masih kosong, tapi ga bisa(atau mungkin ada fungsi lain yang bisa digunakan?). mohon saran dari teman-teman forum... Thanks.... :twisted: dr4cul453xy :twisted:
user image
more 14 years ago

kifmesoft

di casting dulu atau pake operator as seperti yg ada dicontoh itu juga.. ;) misal : (component[i] as TEdit).SetFocus; sama juga kalo mau ambil parent... Parentnya:= (component[i] as TEdit).Parent; :twisted: cleguk!..glek! :twisted:
user image
more 14 years ago

EkoIndri

@dr4cul453xy Sabar mas..... semua itu pasti ada jalan keluarnya Sekali anda berusaha gagal, bukan berarti di kali ke 2000 juga pasti gagal... :D Baiklah, saya sudah bisa menangkap permasalahan yang mas dr4cul453xy hadapi. berikut ini contoh fungsi untuk validasi apakah ada edit yang kosong apa tidak.

.....
.....
function ValidasiEditYangKosong : Boolean;
var
  indek : integer;
begin
with Form1 do
for indek := 0 to ComponentCount -1 do
  begin
  // Cek Class Namenya, jika selain TEdit akan diabaikan
  if Components[Indek].ClassName = 'TEdit' then
    begin
    // Mapping Terhadap posisi tabSheet yang sedang aktif
    with (Components[Indek] as TEdit) do
    if Parent.Name = PageControl1.ActivePage.Name then
      begin
      // Validasi apakah Properties Text jumlah karakternya 0 atau lebih dari 0
      if Length(Text) = 0 then
        begin
        // Pemfokusan kursor pada Edit yang Kosong
        SetFocus;
        // Penentuan nama Edit yang kosong
        NamaEdit := Name;
        // Mengembalikan nilai fungsi
        result := False;
        // Proses dihentikan
        break;
        end;
      end
    // Mapping Terhadap posisi tabSheet yang sedang tidak aktif
    else
      begin
      // Validasi apakah Properties Text jumlah karakternya 0 atau lebih dari 0
      if Length(Text) = 0 then
        begin
        // Pengalihan status TabSheet yang aktif
        PageControl1.ActivePage := (Parent as TTabSheet);
        // Pemfokusan kursor pada Edit yang Kosong
        SetFocus;
        // Mengembalikan nilai fungsi
        // Penentuan nama Edit yang kosong
        NamaEdit := Name;
        result := False;
        // Proses dihentikan
        break;
        end;
      end;
    end;
  // Mengembalikan nilai fungsi
  Result := True;
  end;
end;
.....
.....
jangan lupa untuk mendeklarasikan variabel NamaEdit

.....
.....
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  NamaEdit : string;
implementation
{$R .dfm}
.....
.....
Contoh pemanggilan fungsi

.....
.....
procedure TForm1.Button1Click(Sender: TObject);
begin
if not ValidasiEditYangKosong then
  begin
  MessageDlg('Masih ada Edit yang kosong..'+#13+
             'Tepatnya adalah edit '+NamaEdit
             ,MtWarning,
             [mbOk],
             0);
  end;
// Silahkan anda lanjutkan dengan menyimpan data
// kedalam database
end;
.....
.....
Dan berikut contoh lengkap dari listing programnya

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;
type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    TabSheet3: TTabSheet;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Edit13: TEdit;
    Edit14: TEdit;
    Edit15: TEdit;
    Edit16: TEdit;
    Edit17: TEdit;
    Edit18: TEdit;
    TabSheet4: TTabSheet;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Edit19: TEdit;
    Edit20: TEdit;
    Edit21: TEdit;
    Edit22: TEdit;
    Edit23: TEdit;
    Edit24: TEdit;
    TabSheet5: TTabSheet;
    ComboBox1: TComboBox;
    Label25: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  NamaEdit : string;
implementation
{$R  .dfm}
function ValidasiEditYangKosong : Boolean;
var
  indek : integer;
begin
with Form1 do
for indek := 0 to ComponentCount -1 do
  begin
  // Cek Class Namenya, jika selain TEdit akan diabaikan
  if Components[Indek].ClassName = 'TEdit' then
    begin
    // Mapping Terhadap posisi tabSheet yang sedang aktif
    with (Components[Indek] as TEdit) do
    if Parent.Name = PageControl1.ActivePage.Name then
      begin
      // Validasi apakah Properties Text jumlah karakternya 0 atau lebih dari 0
      if Length(Text) = 0 then
        begin
        // Pemfokusan kursor pada Edit yang Kosong
        SetFocus;
        // Penentuan nama Edit yang kosong
        NamaEdit := Name;
        // Mengembalikan nilai fungsi
        result := False;
        // Proses dihentikan
        break;
        end;
      end
    // Mapping Terhadap posisi tabSheet yang sedang tidak aktif
    else
      begin
      // Validasi apakah Properties Text jumlah karakternya 0 atau lebih dari 0
      if Length(Text) = 0 then
        begin
        // Pengalihan status TabSheet yang aktif
        PageControl1.ActivePage := (Parent as TTabSheet);
        // Pemfokusan kursor pada Edit yang Kosong
        SetFocus;
        // Mengembalikan nilai fungsi
        // Penentuan nama Edit yang kosong
        NamaEdit := Name;
        result := False;
        // Proses dihentikan
        break;
        end;
      end;
    end;
  // Mengembalikan nilai fungsi
  Result := True;
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not ValidasiEditYangKosong then
  begin
  MessageDlg('Masih ada Edit yang kosong..'+#13+
             'Tepatnya adalah edit '+NamaEdit
             ,MtWarning,
             [mbOk],
             0);
  end;
// Silahkan anda lanjutkan dengan menyimpan data
// kedalam database
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
NamaEdit := '';
end;
end.
Jika mas dr4cul453xy masih kurang puas, mas bisa langsung download contoh program bersama dengan source codenya di sini http://esnips.com/web/delphiekoindri dan cari contoh program dengan nama Cek Edit yang kosong Semoga juga bermanfaat buat temen2 yang lain
user image
more 14 years ago

dr4cul453xy

[mode stress = "off"] 8) [mode clever = "on"] Thanks ya bang Eko Indri, problemnya dah terpecahkan ... :D :twisted: dr4cul453xy :twisted:
user image
more 14 years ago

EkoIndri

@dr4cul453xy sama2
more ...
  • Pages:
  • 1
Share to

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com