Tüm Platformlar için Hızlı Uygulama Geliştirme Kitap Yayın Süreci
Kitap gözden geçirilmek üzere BTG (Bilgi ve Teknoloji Grubu) 'na gönderildi. 05.10.2018-14:10
BTG (Bilgi ve Teknoloji Grubu) tarafından iki sayfalık bir reklam tasarımı bekleniyor. 08.10.2018 - 15:30
Kitap basım talebi değerlendirilmek üzere matbaaya bildirildi. Matbaadan basım süreci hakkında bilgi bekleniyor. 15.10.2018 - 15:34
Kitap 1.000 adet basım talebi ile matbaaya gönderildi. 16.10.2018 - 16:50

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Edit panding
#1
Merhaba; TEdit panding özelliği yok, fakat Canvas ile panding yaratmaya çalışıyorum ama olmamdı. panding için basıl bir yol izlemeliyim?


Procedure TForm2.EditCerceveYap(Edit: TEdit);
var
  aCanvas: TControlCanvas;
begin
  aCanvas := Nil;
  try
    aCanvas := TControlCanvas.Create;
    aCanvas.Control := Edit;
    aCanvas.Pen.Width := 1;
    aCanvas.Pen.Color := clWebLime;
    aCanvas.Pen.Style := psInsideFrame;
    aCanvas.Brush.Style := bsClear;
    aCanvas.Rectangle(0, 0, Edit.Width, Edit.Height);
  finally
    aCanvas.free;
  end;
end;
Cevapla
#2
dbgrid componente sutunları filtrelemek için başlıklara edit nesnesi eklemiştim o componenetten bir kaç satır
InflateRect(rct, -1, -1); // bu satır rect içinde padding verir umarım örnek olarak işinize yarar
WriteText procedurü borland yıllar önce yayınladı rect içine yazı yazmak için kullanılır

procedure WriteText(ACanvas: TCanvas; ARect: TRect; DX, DY: integer;
  const Text: string; Alignment: TAlignment; ARightToLeft: boolean);
const
 AlignFlags: array [TAlignment] of integer = (DT_LEFT or DT_WORDBREAK or
   DT_EXPANDTABS or DT_NOPREFIX, DT_RIGHT or DT_WORDBREAK or DT_EXPANDTABS or
   DT_NOPREFIX, DT_CENTER or DT_WORDBREAK or DT_EXPANDTABS or DT_NOPREFIX);
 RTL: array [boolean] of integer = (0, DT_RTLREADING);
var
 B, R: TRect;
 Hold, Left: integer;
 I: TColorRef;
begin
 I := ColorToRGB(ACanvas.Brush.Color);
 if GetNearestColor(ACanvas.Handle, I) = I then
 begin
   if (ACanvas.CanvasOrientation = coRightToLeft) and (not ARightToLeft) then
     ChangeBiDiModeAlignment(Alignment);
   case Alignment of
     taLeftJustify:
       Left := ARect.Left + DX;
     taRightJustify:
       Left := ARect.Right - ACanvas.TextWidth(Text) - 3;
   else
     Left := ARect.Left + (ARect.Right - ARect.Left) shr 1 -
       (ACanvas.TextWidth(Text) shr 1);
   end;
   ACanvas.TextRect(ARect, Left, ARect.Top + DY, Text);
 end
 else
 begin
   DrawBitmap.Canvas.Lock;
   try
     with DrawBitmap, ARect do
     begin
       Width := Max(Width, Right - Left);
       Height := Max(Height, Bottom - Top);
       R := Rect(DX, DY, Right - Left - 1, Bottom - Top - 1);
       B := Rect(0, 0, Right - Left, Bottom - Top);
     end;
     with DrawBitmap.Canvas do
     begin
       Font := ACanvas.Font;
       Font.Color := ACanvas.Font.Color;
       Brush := ACanvas.Brush;
       Brush.Style := bsSolid;
       FillRect(B);
       SetBkMode(Handle, TRANSPARENT);
       if (ACanvas.CanvasOrientation = coRightToLeft) then
         ChangeBiDiModeAlignment(Alignment);
       DrawText(Handle, PChar(Text), Length(Text), R, AlignFlags[Alignment] or
         RTL[ARightToLeft]);
     end;
     if (ACanvas.CanvasOrientation = coRightToLeft) then
     begin
       Hold := ARect.Left;
       ARect.Left := ARect.Right;
       ARect.Right := Hold;
     end;
     ACanvas.CopyRect(ARect, DrawBitmap.Canvas, B);
   finally
     DrawBitmap.Canvas.Unlock;
   end;
 end;
end;

var
  rct: TRect;
begin
 Canvas.Brush.Color := clBtnFace;
 Canvas.Brush.Style := bsSolid;
 rct := Rect(rct.Left, rct.Top + DefaultRowHeight, rct.Right, rct.Bottom);
 Canvas.FillRect(rct);
 Canvas.Brush.Color := clWindow;
 Canvas.Brush.Style := bsSolid;
 Canvas.Font.Color := clBlue;
 InflateRect(rct, -1, -1);
 Canvas.FillRect(rct);
 WriteText(Canvas, rct, 4, 2, Text, taLeftJustify, True);
end;

rct := Edit.BoundsRect; // ile editin rect değerlerini çağırabilirsin
InflateRect(rct, -1, -1);
Canvas.Brush.Color := clWindow;
Canvas.Brush.Style := bsSolid;
Canvas.Font.Color := clBlue;
Canvas.FillRect(rct);
WriteText(Canvas, rct, 4, 2, Text, taLeftJustify, True);
gibi yapılabilir
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  ButtonedEdit veya Edit içinde Canvas ile çizim 3ddark 14 449 22-09-2018, Saat: 23:38
Son Yorum: ssahinoglu
  edit.text kontrolü by_software 5 244 24-07-2018, Saat: 14:51
Son Yorum: Tan Ay
  Edit boş geçilmesin Mericx 10 1.414 24-09-2017, Saat: 05:55
Son Yorum: Halil Han Badem
Question Form İçinde Form Parent Olayında Edit Kontrolü Halil Han Badem 7 893 01-07-2017, Saat: 12:41
Son Yorum: Halil Han Badem
  Bir edit dışında tüm editleri temizleme Dostk 7 926 24-05-2017, Saat: 14:53
Son Yorum: edo



Konuyu Okuyanlar: 1 Ziyaretçi