procedure TransparentPanel(var Target : TPanel);
  var
    I : Integer;
    FullRgn, ClientRgn, ControlRgn : THandle;
    Margin, MarginX, MarginY, X, Y : Integer;
  begin
    Margin  := (Target.Width - Target.ClientWidth) div 2;
    FullRgn := CreateRectRgn(0, 0, Target.Width, Target.Height);
    MarginX := Margin;
    MarginY := Target.Height - Target.ClientHeight - Margin;
    ClientRgn :=
      CreateRectRgn(
        MarginX
        , MarginY
        , MarginX + Target.ClientWidth
        , MarginY + Target.ClientHeight
      );

    CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF);

    for I:=0 to Target.ControlCount-1 do begin
      X := MarginX + Target.Controls[I].Left;
      Y := MarginY + Target.Controls[I].Top;
      ControlRgn :=
        CreateRectRgn(
          X
          , Y
          , X + Target.Controls[I].Width
          , Y + Target.Controls[I].Height
        );
      CombineRgn(FullRgn, FullRgn, ControlRgn, RGN_OR);
    end;

    SetWindowRgn(Target.Handle, FullRgn, True);
  end;

 

원본 : 어느 고수님.. 

procedure SetGridColumnWidths(Grid: TDBGrid);

const

  DEFBORDER = 10;

var

  temp, n: Integer;

  lmax: array [0..30] of Integer;

begin

  with Grid do begin

    Canvas.Font := Font;

    for n := 0 to Columns.Count - 1 do

      lmax[n] := Canvas.TextWidth(Grid.DataSource.DataSet.Fields[n].DisplayLabel) + DEFBORDER;



    grid.DataSource.DataSet.First;

    while not grid.DataSource.DataSet.EOF do begin

      for n := 0 to Columns.Count - 1 do begin

        //if columns[n].visible then begin

        temp := Canvas.TextWidth(trim(Columns[n].Field.DisplayText)) + DEFBORDER;

        if temp > lmax[n] then lmax[n] := temp;

        //end; { if }

      end; {for}



      grid.DataSource.DataSet.Next;

    end; { while }

    grid.DataSource.DataSet.First;

    for n := 0 to Columns.Count - 1 do

      if lmax[n] > 0 then

        Columns[n].Width := lmax[n];

  end; { With }

end;

 

원본링크 : forum.lazarus.freepascal.org/index.php?topic=16248.0

-- 찾기

  function FindForm(const FormName: string) : TForm;
  var
    i : Integer;
  begin
    Result:= nil;

    for i := 0 to Screen.FormCount - 1 do
    begin
      if 0 <> CompareText(Screen.Forms[i].ClassName, FormName) then Continue;
  
      Result := Screen.Forms[i];
      Break;
    end;
  end;


  
-- 체크  

  function CheckForm(const FormName: string) : boolean;
  var
    i : Integer;
  begin
    Result := False;
    for i := 0 to Screen.FormCount - 1 do
    begin
      Result := CompareText(Screen.Forms[i].ClassName, FormName) = 0;
      if Result then
        Break;
    end;
  end;

 

 

+ Recent posts