Delphi Dünyası Facebook'ta

Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

Gönderen Konu: Renkleri Veritabanına Kaydetmek  (Okunma sayısı 2647 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı dynamo

  • Delphi 3 Level 4
  • ****
  • İleti: 137
  • Rep: +3/-1
Renkleri Veritabanına Kaydetmek
« : 26 Nisan 2007 17:26:20 »
Renkler delphi de 3 şekilde tanımlayabiliriz:

1-)TColor sınıfından
2-)Decimal olarak
3-)Hexadecimal olaral:

TColor      Decimal          Hexadecimal
-------------------------------------
clRed        255              FF0000


Delphi'de ColorBox nesnesini kullanışsız olduğundan onun yerine MCColorPanel adlı komponenti kullanıyoruz.anadb veritabanında renk_kayit tablomuz olsun.



MCColorPanel1 de seçilen rengin renk değerlerini editlere atmak ve panel1 de göstermek için OnChange olayını kullanıyoruz:

Kod: [Seç]
procedure TForm1.MCColorPanel1Change(Sender: TObject);
var
  L: Longint;
begin
  L := ColorToRGB(MCColorPanel1.Color);
  edRed.Text   := IntToStr(GetRValue(L));
  edGreen.Text := IntToStr(GetGValue(L));
  edBlue.Text  := IntToStr(GetBValue(L));
  edHex.Text   := GetHexColor(L);
  //edit1.Text:= IntToStr(MCColorPanel1.Color);
  panel1.Color:= TColor(MCColorPanel1.Color);
end;

Tabloya kaydetme:
Kod: [Seç]
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Text:='select * from renk_kayit where renk_kodu='''+Edit1.Text+'''';
    ADOQuery1.Open;
    if  (ADOQuery1.RecordCount =0 ) then begin
        ADOQuery1.Insert;
        ADOQuery1.FieldByName('renk_kodu').AsString:=Edit1.Text;
        ADOQuery1.FieldByName('aciklama').AsString:=Edit2.Text;
        ADOQuery1.FieldByName('renk_id').AsInteger:=MCColorPanel1.Color;
        ADOQuery1.Post;
    end
    else begin
        ADOQuery1.Edit;
        ADOQuery1.FieldByName('renk_kodu').AsString:=Edit1.Text;
        ADOQuery1.FieldByName('aciklama').AsString:=Edit2.Text;
        ADOQuery1.FieldByName('renk_id').AsInteger:=MCColorPanel1.Color;
        ADOQuery1.Post;
    end;

end;

tabloya renkleri decimal olarak integer tanımlanmış renk_id alanına kaydediyorum.istenirse hexadecimal olarak da kaydedilebilir.


Renkleri DBGrid'te göstermek için DBGridin OnDrawColumnCell olayına bu kodu yazalım:

Kod: [Seç]
procedure TfrmRenk_Listesi.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
    if DataCol = 2 then  begin //2 nolu kolon renk_id
        DBGrid1.Canvas.Brush.Color:=ADOQuery1.FieldByName('renk_id').AsInteger;
        DBGrid1.Canvas.Font.Color:=ADOQuery1.FieldByName('renk_id').AsInteger;
    end;
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;



eğer bu kodu yazmazsak renk_id alanında dbgridte rengin sayısal değeri görünür.

örnek proje içinde ekte,MCColorPanel kompnenti içinde:
« Son Düzenleme: 27 Nisan 2007 09:36:47 by Fatih »

Çevrimdışı METEYUS

  • Delphi 3 Level 1
  • *
  • İleti: 100
  • Rep: +0/-0
Ynt: Renkleri Veritabanına Kaydetmek
« Yanıtla #1 : 20 Temmuz 2011 17:33:06 »
benim sql databasede Decimal olarak kaydettiğim renk kodum var.
(
renk
-------
255
8388608)

olarak ilk satır 255 kodu ikinci satırda 8388608 kodu bulunmaktadır.
255 kodu kırmızı , 8388608 kodu koyu mavı buna gore bu alanlardakı degerlerı nasıl okumalıyım kı cxgrıd satır renklerı ona gore sartlı olarak olussun. Burada benım servıs tablomda servıslerın servıs tıpıne gore renk colonunda renkler tutup bu renklere gore cxgrıd satır renklendırme yapmak ıstıyorum yardımlarınız ıcın tesekkurler

Çevrimdışı erdal51

  • Delphi 3 Level 5
  • *****
  • İleti: 144
  • Rep: +0/-0
  • Cinsiyet: Bay
  • Delphi'ci. . . . . . . . . . . .
Ynt: Renkleri Veritabanına Kaydetmek
« Yanıtla #2 : 26 Ağustos 2011 12:23:55 »
Teşekkürler....
Showmessage('Hata : Hatasız Program Olmaz :D');