Category Archives: Delphi

[Delphi] Detect grid record with mouse down event (Quantum Grid)

Cell Click 이 아니라 Mouse down으로 Grid Record를 잡아야 할때가 있을지도 모른다…………….
나같은 경우는 Cell Click에서 자꾸 에러가 나서 (Ahandled를 모를때) 그랬다.

아래와 같이 하면된다.

var
  AHitTest: TcxCustomGridHitTest;
  AGridSite: TcxGridSite;
  AGridView: TcxGridTableView;
  AResult : Integer;
begin

  AGridSite := Sender as TcxGridSite;
  AGridView := AGridSite.GridView as TcxGridTableView;
  AHitTest := AGridView.GetHitTest(X, Y);

  if not (AHitTest is TcxGridRecordHitTest) then
  begin
    Exit;
  end;


  if (AHitTest as TcxGridRecordHitTest).GridRecord <> nil then
  begin
    //(AHitTest as TcxGridRecordHitTest).GridRecord 를 이용해서 Grid Record에 접근하자.
  end;

[Delphi] Make Rainbow color (each rect) with GDI++

GDI++라이브러리를 이용하여
Rect 별로 하나씩 색을 그라데이션 하여 무지개 색을 칠해보았다.
이걸 한 건 다른 이유는 아니고, 그래프 라이브러리를 만들었는데
무지개색도 보여줄수 있어여! 를 자랑하고 싶어서였다.

    f := (index mod totalCount) / totalCount;
    //색조절
    a := (1 - f) / 0.20;
    X := Floor(a);
    Y := Floor(250 * (a - x));

    case X of
      0:
        begin
          R := 250;
          G := Y;
          B := 5;
        end;
      1:
        begin
          R := 250 - Y;
          G := 250;
          B := 5;
        end;
      2:
        begin
          R := 5;
          G := 250;
          B := Y;
        end;
      3:
        begin
          R := 5;
          G := 250 - Y;
          B := 250;
        end;
      4:
        begin
          R := Y;
          G := 15;
          B := 250;
        end;
      5:
        begin
          R := 250;
          G := 5;
          B := 250;
        end;
    end;
    GPWBrush := TGPSolidBrush.Create(TGPColor.Create(R, G, B));
    GPG.FillRectangle(GPWBrush, GPRect);

[Delphi] Resource image to Dataset field

리소스에 있는 이미지를 데이터 셋에 넣어보았다.
데이터셋 필드에 이미지가 없을때, 리소스에 있는 기본이미지를 넣어줘야 했는데 어떻게 하는지 한참 헤맸다

  try
    FNoPicPt := TPngImage.Create;
    FNoPicPt := TResource.Instance.PNG['dfimg'];

    MStream := TMemoryStream.Create;
    MStream.Clear;
    FNoPicPt.SaveToStream(MStream);
    MStream.Position := 0;
    TBlobField(copiedDt.FieldByName('LgImgStream')).LoadFromStream(MStream);

  finally
    MStream.Free;
// Free를 해버리면 이미지가 날라간다.
//    FNoPicPt.Free;
  end;

[Delphi] Quantum Grid Swap Row

퀀텀그리드에서 두 라인을 바꿔 보았다.

procedure SwapRows(AView: TcxGridTableView; ADestRow: integer);
var
  ASourceValue, ADestValue: Variant;
  i : Integer;
begin
  with AView do
  begin
    DataController.BeginUpdate;
    for i := 0 to AView.ItemCount - 1 do
    begin
      ASourceValue := ViewData.Rows[ASourceRow].Values[i];
      ADestValue := ViewData.Rows[ADestRow].Values[i];
      ViewData.Rows[ASourceRow].Values[i] := ADestValue;
      ViewData.Rows[ADestRow].Values[i] := ASourceValue;
    end;
    DataController.EndUpdate;
    ViewData.Rows[ADestRow].Focused := True;
  end;
end;