panel componenti
ewet bu komponeti de odev olduğundasn dolayı yaptım. componentin yaptığı işlem şu:
eğer kullanıcı Ctrl+Click yaparsa colordialog acılıp arkal plan rengi secilir ve panelin rengi değişir.
shift + click yaparsa panelin yazı rengini değiştirir.
ctrl + shift + click yaparsa font dialog acılır ve yazı tipi + boyutu, rengi vs. ayarlayabilir.
ayrıca bunu setup.ini isimli ini dosyasına kaydediyor ve program tekrar acıldığında eski bilgiler geri geliyor. ustelik bu sadece tek bir panel icin değil ayrı ayrı bağımsız tum paneller icin gecerli, Kodlar aşağıda(bu arada Delphi 5'te yaptım);
bu arada componenti yaparken panelin ismini avrilpanel yapınız.
------
unit AvrilPanel;
interface
uses
Windows, Messages,IniFiles, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls;
type
TAvrilPanel = class(TPanel)
private
FColor: TColorDialog; // Renk Dialog Kutusu
FFont : TFontDialog;
Section: String; // İni Dosyasından Okunacak Alan
IniFile : TIniFile;
Form_Name : String; // Formun adının tutulduğu değişken
Exe_Name: String; // Exe'nin adının tutulduğu Değişken
SColor: String; // Okunan ya da Yazılan Renk'in gecici olarak tutulduğu Değer
protected
procedure MouseDown (Button : TMouseButton; Shift : TShiftState;
X, Y : Integer); override;
procedure Loaded; override;
public
constructor Create(AOwner: TComponent); override;
published
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('MyComponents', [TAvrilPanel]);
end;
constructor TAvrilPanel.Create(AOwner: TComponent);
begin
inherited;
FColor:=TColorDialog.Create(Self);
FFont :=TFontDialog.Create(Self);
IniFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
end;
procedure TAvrilPanel.Loaded;
begin
inherited;
Form_Name:=(GetParentForm(Self).Name); // Formun Adı
Exe_Name :=ChangeFileExt(Application.ExeName,'.ini'); //Exe'nin Adı
SColor:= inifile.ReadString('BACK_COLOR',Form_Name + '_'+Name,'clWhite');
Color:=StringToColor(SColor);
SColor:=inifile.ReadString('FONT_COLOR',Form_Name + '_'+Name,'clblack');
Font.Color:=StringToColor(SColor);
Font.Name := IniFile.ReadString('Font', Form_Name+'_'+ Name+'_Name', 'Courier New');
Font.Size := IniFile.ReadInteger('Font', Form_Name+'_'+ Name+'_Size', 9);
if IniFile.ReadBool('Font', Form_Name+'_'+ Name+'_Bold', false) then
Font.Style := Font.Style + [fsBold];
if IniFile.ReadBool('Font', Form_Name+'_'+ Name+'_Italic', false) then
Font.Style := Font.Style + [fsItalic];
if IniFile. ReadBool('Font',Form_Name+'_'+ Name+'_Underline', false) then
Font.Style := Font.Style + [fsUnderline];
if IniFile.ReadBool('Font', Form_Name+'_'+ Name+'_StrikeOut', false) then
Font.Style := Font.Style + [fsStrikeOut];
end;
procedure TAvrilPanel.MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
begin
inherited;
Form_name:=(GetParentForm(Self).Name);
if (SSShift in Shift) and (SSCtrl in Shift) Then
begin
FFont.Execute;
if FFont.Font.Color = Color Then
if Application.MessageBox('-UYARI'+Chr(13]Chr(13]
'- Yazı Rengi ile Arka Plan rengi Aynı, Bu Yazıların Gorunmemesine yol acacaktır.'+chr(13]Chr(13]
'Devam Edilsinmi?','Uyarı',MB_YESNO) = idyes then begin
Font.Color:=ffont.Font.Color;
iniFile.WriteString('FONT_COLOR',Form_Name+'_'+ Name, ColorToString(FFont.Font.Color));
End;
If FFont.Font.colorColor Then
begin
Font.Color:=ffont.Font.Color;
iniFile.WriteString('FONT_COLOR',Form_Name+'_'+ Name, ColorToString(FFont.Font.Color));
end;
font.name:=ffont.Font.Name;
font.size:=ffont.Font.Size;
Font.Style := FFont.Font.Style;
iniFile.WriteString('Font',Form_Name+'_'+ Name+'_Name', FFont.Font.Name);
iniFile.WriteInteger('Font',Form_Name+'_'+ Name+'_Size',FFont.Font.Size);
IniFile.WriteBool('Font', Form_Name+'_'+ Name+'_Bold', (fsBold in Font.Style));
IniFile.WriteBool('Font', Form_Name+'_'+ Name+'_Italic', (fsItalic in Font.Style));
Inifile.WriteBool('Font', Form_Name+'_'+ Name+'_Underline', (fsUnderline in Font.Style));
inifile.WriteBool('Font', Form_Name+'_'+ Name+'_StrikeOut', (fsStrikeOut in Font.Style));
Exit;
end;
if (SSCtrl in Shift) Or (SSShift in Shift) Then
begin
SColor := ColorToString(FColor.Color);
FColor.Execute; //renk dialog kutusunu calıştır
If FColor.Color = StringToColor(SColor) Then Exit;
if (SSShift in Shift) and (FColor.Color = Color) Then
if Application.MessageBox('-UYARI'+Chr(13]Chr(13]
'- Yazı Rengi ile Arka Plan rengi Aynı, Bu Yazıların Gorunmemesine yol acacaktır.'+chr(13]Chr(13]
'Devam Edilsinmi?','Uyarı',MB_YESNO) = idno then Exit;
if (SSCtrl in Shift) and (FColor.Color = Font.Color) Then
if Application.MessageBox('-UYARI'+Chr(13]Chr(13]
'- Yazı Rengi ile Arka Plan rengi Aynı, Bu Yazıların Gorunmemesine yol acacaktır.'+chr(13]Chr(13]
'Devam Edilsinmi?','Uyarı',MB_YESNO) = idno then Exit;
SColor:=ColorToString(FColor.Color); //Secilen Rengi Al
if SSCtrl in Shift Then Begin Color := FColor.Color; Section:='BACK_COLOR'; End; // Rengi Uygula ve alanı al
if SSShift in Shift Then Begin Font.Color := FColor.Color; Section:='FONT_COLOR'; End; // Rengi Uygula ve alanı al
iniFile.WriteString(section,Form_Name+'_'+ Name, SColor); // İni dosyasına yaz
End;
end;
end.
__________________
Harika bir component daha...ben yaptım :)
Programlama0 Mesaj
●46 Görüntüleme
- ReadBull.net
- Programlama ve Yazılım
- Programlama
- Harika bir component daha...ben yaptım :)