1000 adet edit
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
1000 adet edit
arkadaşlar formumda 1000 adet edit ve 1 buton var. bu butona tıkladığımda hangi editin içindeysem o edit ve ardındaki 5 editin rengi kırmızı olsun.Delphi7 ve win xp kullanıyorum.Teşekkürler.
bı kadar editi neden kullandım bilmiyorum ama bunun yerine grid kullansan bundan daha kolay olur ve aktif grid hücresinde iken istediğin kontölü yaptırırdın....şimdi içinde bulunduğun editin hangi edit olduğun tespit edecen sonra ondan sonraki editleri tesbit edecen...yani sen kulağını ters yönden yakalıyorsun gibi geldi bana .......
Siz hayal edin...Biz yapalım TuannaSoft...
Ben şöyle bir çözüm buldum.
Editbox'ları create ederken taglarını editbox'ın numarasına göre atadım.
gibi
Her editin girişinde tanımladığım bir integer değişkene o editin tag'ını atadım. Butona basınca da bu değiken numarasında başlayan editleri kırmızı yaptım.
Kolay gelsin...
Editbox'ları create ederken taglarını editbox'ın numarasına göre atadım.
Kod: Tümünü seç
edit1.tag:=1;
gibi
Her editin girişinde tanımladığım bir integer değişkene o editin tag'ını atadım. Butona basınca da bu değiken numarasında başlayan editleri kırmızı yaptım.
Kolay gelsin...
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Bir şekilde kontrol edilip bulunuabilr tabi,
Mesela her edit'in onenter eventini 1. Edite'e yönlendirir ona da asagidaki kodu yazarsanız...TEdit tipindeki VAR_BULUNULAN_EDIT degiskeninde o an bulunulan Edit'in adi vardir... Bu Edit'in numarasından sonraki numaralardan hareketle de sıradaki edit componentlerine ulaşırısız....
AMAAAAA ilk akla gelen 1000 edit'in neden oldugu? Yani sanki uygun bir tasarım degilmiş gibime geliyor.... O kadar componentin bir formda olması tavsiye edilen bir durum degildir...
Kolay gelsin....
Mesela her edit'in onenter eventini 1. Edite'e yönlendirir ona da asagidaki kodu yazarsanız...
Kod: Tümünü seç
VAR_BULUNULAN_EDIT:=TEdit(Sender);
AMAAAAA ilk akla gelen 1000 edit'in neden oldugu? Yani sanki uygun bir tasarım degilmiş gibime geliyor.... O kadar componentin bir formda olması tavsiye edilen bir durum degildir...
Kolay gelsin....
* http://www.fahrettin.org Manzara Fotoğraflarım...
* http://delphiturkiye.gunduz.info Seminerler...
* http://www.hakmar.com.tr Kalite bir haktır...
* http://delphiturkiye.gunduz.info Seminerler...
* http://www.hakmar.com.tr Kalite bir haktır...
- pentiumkivanc
- Üye
- Mesajlar: 350
- Kayıt: 19 Şub 2004 10:24
- İletişim:
tekrar bi başlık açmamk için buraya yazıyorum
benim sorunumda aşağı yukarı aynı
yani formda yaklaşk olarak 50 tane dbedit var
kullanıcı hangi editteyse o editin rengi kırmızı olacak
acaba nasıl
benim sorunumda aşağı yukarı aynı
yani formda yaklaşk olarak 50 tane dbedit var
kullanıcı hangi editteyse o editin rengi kırmızı olacak
acaba nasıl
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
OnEnter ve/veya OnExit eventlerini kullanabilrisiniz:
İyi çalışmalar.
Kod: Tümünü seç
procedure TForm1.DBEdit1Enter(Sender: TObject);
begin
TDBEdit(Sender).Color := clRed;
end;
procedure TForm1.DBEdit1Exit(Sender: TObject);
begin
TDBEdit(Sender).Color := clWindow;
end;
hocam teşekkür ederim
çok işime yaradı
çok işime yaradı
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Re: 1000 adet edit
Bin adet edit yerine arkadaşların söylediği gibi DbGrid kullanman daha mantıklı. İstediğin mantıkda aşağıda bir örnek yaptım umarım işini görür.
ben 30 tane buton hazırladım sen bu rakamı bin yap delphi 7 de ve XP işletim sisteminde yazdım bu kodu iyi çalışmalar
http://www.kolayyol.net
ben 30 tane buton hazırladım sen bu rakamı bin yap delphi 7 de ve XP işletim sisteminde yazdım bu kodu iyi çalışmalar
http://www.kolayyol.net
Kod: Tümünü seç
unit EditOrnek;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TEditSample = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Button1Click(Sender: TObject);
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
EditSample : TEditSample;
MakEdit : array of TEdit;
i,j : integer;
X,Y,Z : integer;
SetEditIndex : integer;
implementation
{$R *.dfm}
procedure TEditSample.FormActivate(Sender: TObject);
begin
X := 2; // Sol başlangıç
Y := 2; // Üst başlangıç
Z := 122 ; // genişlik
SetLength(MakEdit,30);
for i:=0 to 29 do
begin // butonları hazırlayıp diziyor
MakEdit[i]:=TEdit.Create(self);
with MakEdit[i] do
begin // değerler atanıyor
Height := 21;
if ( i mod 5) = 0 then
begin
left := 2;
if i > 0 then Y := Y + Height + 1;
end
else
left := 2 + (Z * ( i mod 5 ));
Width := Z ;
Top := Y ;
parent := EditSample;
OnKeyUp := EditSample.OnKeyUp;
OnClick := EditSample.OnClick;
end; // değerler atanıyor
end; // butonları hazırlayıp diziyor
end;
procedure TEditSample.FormClose(Sender: TObject; var Action: TCloseAction);
begin
for i:=0 to 29 do
begin // Hazırlanan nesneleri yok et
if MakEdit[i]<>nil then
MakEdit[i].Free;
end; // Hazırlanan nesneleri yok et
end;
procedure TEditSample.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ActiveControl is TEdit) then
SetEditIndex := TEdit(ActiveControl).ComponentIndex;
end;
procedure TEditSample.Button1Click(Sender: TObject);
begin
for j:=0 to 4 do
begin
if ( j + SetEditIndex) < ComponentCount then
TEdit(Components[SetEditIndex + j]).Color := clRed;
end;
end;
procedure TEditSample.FormClick(Sender: TObject);
begin
if (ActiveControl is TEdit) then
SetEditIndex := TEdit(ActiveControl).ComponentIndex;
end;
end.