1000 adet edit

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
serelif
Üye
Mesajlar: 30
Kayıt: 21 Eki 2003 12:15
Konum: antalya

1000 adet edit

Mesaj gönderen serelif »

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.
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

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...
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Ben şöyle bir çözüm buldum.
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
Resim
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Bir şekilde kontrol edilip bulunuabilr tabi,
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);
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....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
serelif
Üye
Mesajlar: 30
Kayıt: 21 Eki 2003 12:15
Konum: antalya

Mesaj gönderen serelif »

haklısınız hocam 1000 edit yerine grid kullanmak daha akıllıca olacak , ama nasıl yapacağımı halen bulamadım.Olay Şu olacak formdaki butona tıkladığımda hangi hücre içindeysem o hücre ve sonraki 5 hücrenin rengi değişsin (kırmızı)...Kod tam olarak ne olmalı??? yardımlarınız için teşekkürler.
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

ipuçları bölümünde dbgridde istenilen hücreyi renklendirme ile ilgili bilgi vardı. üstünde biraz oynama yapabilirsin
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1269
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

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
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

OnEnter ve/veya OnExit eventlerini kullanabilrisiniz:

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;
İyi çalışmalar.
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1269
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

hocam teşekkür ederim

çok işime yaradı
:lol:
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
MakPRO
Üye
Mesajlar: 251
Kayıt: 31 Eki 2003 05:21
Konum: Antalya
İletişim:

Re: 1000 adet edit

Mesaj gönderen MakPRO »

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


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.

Cevapla