tıklanan nesnenin rengini değiştirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
underwater
Üye
Mesajlar: 86
Kayıt: 27 May 2014 04:27

tıklanan nesnenin rengini değiştirme

Mesaj gönderen underwater »

Arkadaşlar merhaba;

Delphi 7 kullanıyorum.Şöyle birşey yapmak istiyorum.

Formumda 1000 tane edit olduğunu düşünün.Hangi edite tıklarsam edit rengi beyaz ise siyah yada siyah ise beyaz olsun istiyorum.Renk değiştirecek yani.

3-5 tane editten bahsetmiş olsam sıkıntı yok. lakin sözkonusu 1000 tane olunca herbirinin tek tek onclick olayına kod yazmam mümkün değil.

Bir prosüder tanımlayıp seçili nesneyi buldurup rengi ona göre değiştirmem lazım.
Seçili nesneyi ve rengini nasıl bulurum?
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: tıklanan nesnenin rengini değiştirme

Mesaj gönderen brs »

Kod: Tümünü seç

procedure TForm1.Renk(Sender: TObject);
var
  i: integer;
begin
  For i := 0 to Componentcount - 1 do
  Begin
    if Components[i] is TEdit and (Length(TEdit(Components[i]).Text) > 0) then
    begin
      TEdit(Components[i]).Font.Color := RGB(255, 0, 0);
    end;
  end;
end;
Bu arada 1000 adet edit ne için kullanılabilir ki?
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
3ddark
Üye
Mesajlar: 89
Kayıt: 14 Eyl 2010 10:55
Konum: İstanbul

Re: tıklanan nesnenin rengini değiştirme

Mesaj gönderen 3ddark »

Kod: Tümünü seç

procedure TForm1.EditClickColor(Sender: TObject);
begin
  inherited Click;

  if (Sender is TEdit) then
  begin

    if (Sender as TEdit).Color = clWhite then
    begin
      (Sender as TEdit).Color := clBlack;
      (Sender as TEdit).Font.Color := clWhite;
    end
    else
    if (Sender as TEdit).Color = clBlack then
    begin
      (Sender as TEdit).Color := clWhite;
      (Sender as TEdit).Font.Color := clBlack;
    end;

  end;

end;

procedure TForm1.FormCreate(Sender: TObject);
var
  nIndex : Integer;
begin

  for nIndex := 0 to Self.ComponentCount - 1 do
  begin

    if Components[nIndex].ClassType = TEdit then
    begin
      TEdit(Components[nIndex]).OnClick := EditClickColor;
      TEdit(Components[nIndex]).Color   := clWhite;
    end;

  end;
end;
Yanlış anlamadıysam bu senin ödevin. Buradaki mantığı kavramaya çalış. Form üzerindeki TEdit tipinden olan bütün componentlerin rengini beyaz ve OnClick olayını renk kodunu değiştirmek için yazdığım proceduru veriyorum. O procedure içinde de önce normal onclick olayını gerçekleştirip daha sonra renklerin durumuna göre gerekli renk değişimini yapıyor.
PostgreSQL - Delphi - Linux :!:
underwater
Üye
Mesajlar: 86
Kayıt: 27 May 2014 04:27

Re: tıklanan nesnenin rengini değiştirme

Mesaj gönderen underwater »

yardımınız için çok teşekkür ederim.

kodumu şu şekilde yazdım:

Kod: Tümünü seç

procedure TForm1.Edit1Click(Sender: TObject);
begin
 if (Sender is TEdit) then
  begin
    if (Sender as TEdit).Color=clWindow then (Sender as TEdit).Color:=clBlack else (Sender as TEdit).Color:=clWindow;
  end;
end;
Cevapla