by
ru
en
by

Avemey

logo
ФайлыГлавнаяСсылкиФотографииАниме

Примеры кода для ZColorStringGrid и ZCLabel

ZColorStringGrid проверялся на: Delphi 7, 2005-XE2; C++Builder 6.
ZCLabel проверялся на:
  • Lazarus 0.9.28.2 (FPC 2.2.4 + Debian 5.0 + KDE3.5), Lazarus 0.9.30.2 (FPC 2.4.4 + Debian 6.0.3 + GNOME / Windows)
  • Delphi 7, 2005-XE2
  • C++Builder 6

Примеры использования ZColorStringGrid:

Стиль ячейки

ZColorStringGrid стиль ячейки

Пример кода для Delphi Пример кода для C++Builder-a
procedure TfrmMain.FormCreate(Sender: TObject);
var
  i, j: integer;

begin
  //заполняем грид
  for i := 1 to ZColorStringGrid1.ColCount - 1 do
  for j := 1 to ZColorStringGrid1.RowCount - 1 do
    ZColorStringGrid1.Cells[i, j] := IntToStr(i * j);

  //Цвет фона
  ZColorStringGrid1.CellStyle[1, 1].BGColor := clYellow;
  ZColorStringGrid1.CellStyle[2, 1].BGColor := clGreen;
  ZColorStringGrid1.CellStyle[3, 1].BGColor := clLime;

  //Меняем стиль у колонки
  ZColorStringGrid1.CellStyleCol[1, false] := ZColorStringGrid1.CellStyle[1, 1];
  ZColorStringGrid1.CellStyleCol[2, true] := ZColorStringGrid1.CellStyle[2, 1];

  //Меняем стиль у ряда
  ZColorStringGrid1.CellStyleRow[3, false] := ZColorStringGrid1.CellStyle[3, 1];

  //Шрифт
  ZColorStringGrid1.CellStyle[2, 3].Font.Size := 12;
  ZColorStringGrid1.CellStyle[2, 3].Font.Name := 'Tahoma';
  ZColorStringGrid1.CellStyle[2, 3].Font.Style := [fsBold, fsItalic];
  ZColorStringGrid1.CellStyle[2, 2].Font.Color := clWhite;

  //Рамка ячейки
  ZColorStringGrid1.CellStyle[3, 3].BorderCellStyle := sgLowered;
  ZColorStringGrid1.CellStyle[4, 3].BorderCellStyle := sgRaised;
end;
void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
  int i = 0;
  int j = 0;
  //заполняем грид
  for (i = 0; i < ZColorStringGrid1->ColCount; i++)
  for (j = 0; j < ZColorStringGrid1->RowCount; j++)
  {
    ZColorStringGrid1->Cells[i][j] = IntToStr(i * j);
  }

  //Цвет фона
  ZColorStringGrid1->CellStyle[1][1]->BGColor = clYellow;
  ZColorStringGrid1->CellStyle[2][1]->BGColor = clGreen;
  ZColorStringGrid1->CellStyle[3][1]->BGColor = clLime;

  //Меняем стиль у колонки
  ZColorStringGrid1->CellStyleCol[1][false] = ZColorStringGrid1->CellStyle[1][1];
  ZColorStringGrid1->CellStyleCol[2][true] = ZColorStringGrid1->CellStyle[2][1];

  //Меняем стиль у ряда
  ZColorStringGrid1->CellStyleRow[3][false] = ZColorStringGrid1->CellStyle[3][1];

  //Шрифт
  ZColorStringGrid1->CellStyle[2][3]->Font->Size = 12;
  ZColorStringGrid1->CellStyle[2][3]->Font->Name = "Tahoma";
  ZColorStringGrid1->CellStyle[2][3]->Font->Style = 
    TFontStyles() << fsBold << fsItalic;
  ZColorStringGrid1->CellStyle[2][2]->Font->Color = clWhite;

  //Рамка ячейки
  ZColorStringGrid1->CellStyle[3][3]->BorderCellStyle = sgLowered;
  ZColorStringGrid1->CellStyle[4][3]->BorderCellStyle = sgRaised;
}

Выравнивание и отступы

ZColorStringGrid Отступы и выравнивание в ячейке

Пример кода для Delphi Пример кода для C++Builder-a
procedure TfrmMain.FormCreate(Sender: TObject);
var
  i, j, r: byte;

begin
  //Выравнивание: горизонталь - слева, вертикаль - центр
  ZColorStringGrid1.Cells[1, 0] := 'H:L + V:C';
  //Выравнивание: горизонталь - справа, вертикаль - центр
  ZColorStringGrid1.Cells[2, 0] := 'H:R + V:C';
  //Выравнивание: горизонталь - слева, вертикаль - сверху
  ZColorStringGrid1.Cells[3, 0] := 'H:L + V:T';
  //Выравнивание: горизонталь - по центру, вертикаль - снизу
  ZColorStringGrid1.Cells[4, 0] := 'H:C + V:D';
  for i := 0 to 5 do
  begin
    r := i + 1;
    for j := 1 to 4 do
    begin
      ZColorStringGrid1.Cells[j, r] := IntToStr(i);
      //Отступ по горизонтали
      ZColorStringGrid1.CellStyle[j, r].IndentH := i;
    end;
    //Справа
    ZColorStringGrid1.CellStyle[2, r].HorizontalAlignment := taRightJustify;
    //Сверху
    ZColorStringGrid1.CellStyle[3, r].VerticalAlignment := vaTop;
    //по центру
    ZColorStringGrid1.CellStyle[4, r].HorizontalAlignment := taCenter;
    //Снизу
    ZColorStringGrid1.CellStyle[4, r].VerticalAlignment := vaBottom;

    //Отступ по вертикали
    for j := 3 to 4 do
      ZColorStringGrid1.CellStyle[j, r].IndentV := i;
  end;
end;
void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
  //Выравнивание: горизонталь - слева, вертикаль - центр
  ZColorStringGrid1->Cells[1][0] = "H:L + V:C";
  //Выравнивание: горизонталь - справа, вертикаль - центр
  ZColorStringGrid1->Cells[2][0] = "H:R + V:C";
  //Выравнивание: горизонталь - слева, вертикаль - сверху
  ZColorStringGrid1->Cells[3][0] = "H:L + V:T";
  //Выравнивание: горизонталь - по центру, вертикаль - снизу
  ZColorStringGrid1->Cells[4][0] = "H:C + V:D";
  int i = 0;
  int j = 0;
  int r = 0;
  for (i = 0; i <= 5; i++)
  {
    r = i + 1;
    for (j = 1; j < 5; j++)
    {
      ZColorStringGrid1->Cells[j][r] = IntToStr(i);
      //Отступ по горизонтали
      ZColorStringGrid1->CellStyle[j][r]->IndentH = i;
    }
    //Справа
    ZColorStringGrid1->CellStyle[2][r]->HorizontalAlignment = taRightJustify;
    //Сверху
    ZColorStringGrid1->CellStyle[3][r]->VerticalAlignment = vaTop;
    //по центру
    ZColorStringGrid1->CellStyle[4][r]->HorizontalAlignment = taCenter;
    //Снизу
    ZColorStringGrid1->CellStyle[4][r]->VerticalAlignment = vaBottom;

    //Отступ по вертикали
    for (j = 3; j < 5; j++)
      ZColorStringGrid1->CellStyle[j][r]->IndentV = i;
  }
}

Объединение ячеек

ZColorStringGrid Объединение ячеек

Пример кода для Delphi Пример кода для C++Builder-a
procedure TfrmMain.FormCreate(Sender: TObject);
var
  Rct: TRect;
  res: integer;

begin
  //Объединение фиксированных ячеек
  res := ZColorStringGrid1.MergeCells.AddRectXY(1, 0, 3, 0);
  if (res <> 0) then
  begin
    {Если не удалось объединить ячейки}
  end;
  ZColorStringGrid1.Cells[1, 0] := 'Объединённая ячейка';
  Rct.Top := 1;
  Rct.Left := 0;
  Rct.Right := 0;
  Rct.Bottom := 3;
  ZColorStringGrid1.MergeCells.AddRect(Rct);
  ZColorStringGrid1.Cells[0, 1] := 'Текст';

  //Попытка объединения фиксированных ячеек с нефиксированными
  res := ZColorStringGrid1.MergeCells.AddRectXY(0, 4, 3, 5);
  if (res <> 0) then
    ZColorStringGrid1.Cells[0, 4] := 'Провал'
  else
    ZColorStringGrid1.Cells[0, 4] := 'Получилось!';

  //Проверку на объединение можно не делать
  ZColorStringGrid1.MergeCells.AddRectXY(2, 1, 4, 4);
  ZColorStringGrid1.Cells[2, 1] := ZColorStringGrid1.Cells[1, 0];
end;
void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
  int res = 0;
  //Объединение фиксированных ячеек
  res = ZColorStringGrid1->MergeCells->AddRectXY(1, 0, 3, 0);
  if (res != 0)
  {
    /* Если не удалось объединить ячейки */
  }
  ZColorStringGrid1->Cells[1][0] = "Объединённая ячейка";

  TRect Rct;
  Rct.Top = 1;
  Rct.Left = 0;
  Rct.Right = 0;
  Rct.Bottom = 3;
  ZColorStringGrid1->MergeCells->AddRect(Rct);
  ZColorStringGrid1->Cells[0][1] = "Текст";

  //Попытка объединения фиксированных ячеек с нефиксированными
  res = ZColorStringGrid1->MergeCells->AddRectXY(0, 4, 3, 5);
  if (res != 0)
    {ZColorStringGrid1->Cells[0][4] = "Провал";}
  else
    {ZColorStringGrid1->Cells[0][4] = "Получилось!";};

  //Проверку на объединение можно не делать
  ZColorStringGrid1->MergeCells->AddRectXY(2, 1, 4, 4);
  ZColorStringGrid1->Cells[2][1] = ZColorStringGrid1->Cells[1][0];
}

Поворот текста в ячейках

ВНИМАНИЕ: Поворачивать текст можно только используя TrueType шрифты!
ZColorStringGrid Поворот текста

Пример кода для Delphi Пример кода для C++Builder-a
procedure TfrmMain.FormCreate(Sender: TObject);
var
  i, j: integer;

begin
  //Устанавливаем всем ячейкам TrueType шрифт
  for i := 0 to ZColorStringGrid1.ColCount - 1 do
  for j := 0 to ZColorStringGrid1.RowCount - 1 do
  begin
    ZColorStringGrid1.CellStyle[i, j].Font.Name := 'Tahoma';
    ZColorStringGrid1.CellStyle[i, j].Font.Size := 12;
  end;
  //Поворот в объединённых ячейках
  ZColorStringGrid1.MergeCells.AddRectXY(0, 1, 0, 4);
  ZColorStringGrid1.CellStyle[0, 1].Rotate := 90;
  ZColorStringGrid1.Cells[0, 1] := 'Поворот' + sLineBreak +
    'текста на' + sLineBreak + '90 градусов';

  ZColorStringGrid1.MergeCells.AddRectXY(1, 0, 3, 0);
  ZColorStringGrid1.CellStyle[1, 0].Rotate := 180;
  ZColorStringGrid1.Cells[1, 0] := 'Поворот на 180 градусов';

  ZColorStringGrid1.MergeCells.AddRectXY(2, 1, 4, 6);
  ZColorStringGrid1.CellStyle[2, 1].Rotate := 60;
  ZColorStringGrid1.CellStyle[2, 1].Font.Size := 16;
  ZColorStringGrid1.CellStyle[2, 1].HorizontalAlignment := taCenter;
  ZColorStringGrid1.Cells[2, 1] := 'Поворот' + sLineBreak +
    'многострочного' + sLineBreak + 'текста на' +
    sLineBreak + '60 градусов';

  //Поворот в обыкновенных ячейках
  ZColorStringGrid1.CellStyle[1, 1].Rotate := 180;
  ZColorStringGrid1.Cells[1, 1] := 'Текст';
end;
void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
  int i = 0;
  int j = 0;
  //Устанавливаем всем ячейкам TrueType шрифт
  for (i = 0; i < ZColorStringGrid1->ColCount; i++)
  for (j = 0; j < ZColorStringGrid1->RowCount; j++)
  {
    ZColorStringGrid1->CellStyle[i][j]->Font->Name = "Tahoma";
    ZColorStringGrid1->CellStyle[i][j]->Font->Size = 12;
  }
  //Поворот в объединённых ячейках
  ZColorStringGrid1->MergeCells->AddRectXY(0, 1, 0, 4);
  ZColorStringGrid1->CellStyle[0][1]->Rotate = 90;
  ZColorStringGrid1->Cells[0][1] = String("Поворот") +  sLineBreak +
	String("текста на") + sLineBreak + String("90 градусов");

  ZColorStringGrid1->MergeCells->AddRectXY(1, 0, 3, 0);
  ZColorStringGrid1->CellStyle[1][0]->Rotate = 180;
  ZColorStringGrid1->Cells[1][0] = "Поворот на 180 градусов";

  ZColorStringGrid1->MergeCells->AddRectXY(2, 1, 4, 6);
  ZColorStringGrid1->CellStyle[2][1]->Rotate = 60;
  ZColorStringGrid1->CellStyle[2][1]->Font->Size = 16;
  ZColorStringGrid1->CellStyle[2][1]->HorizontalAlignment = taCenter;
  ZColorStringGrid1->Cells[2][1] = String("Поворот") + sLineBreak +
	String("многострочного") + sLineBreak + String("текста на") +
	sLineBreak + String("60 градусов");

  //Поворот в обыкновенных ячейках
  ZColorStringGrid1->CellStyle[1][1]->Rotate = 180;
  ZColorStringGrid1->Cells[1][1] = "Текст";
}

Примеры использования ZCLabel:

Выравнивание и поворот текста


Для успешного запуска на форме нужно разместить 15 ZClabel-ов, установить им: TrueType шрифт, ширину и высоту (80 и 70).
ZCLabel выравнивание и поворот текста

Пример кода для Lazarus/Delphi Пример кода для C++Builder-a
procedure TfrmMain.FormCreate(Sender: TObject);
var
  i: integer;
  num: integer;
  ZCL: TZCLabel;
  s: string;
  ang: integer;
  sEOL: string;

begin
  num := 0;
  ang := 0;
  {$IFDEF FPC}
  sEOL := LineEnding;
  {$ELSE}
  sEOL := sLineBreak;
  {$ENDIF}

  s := 'Пример текста' + sEOL + 'какой-то';
  //пробегаем по всем компонентам
  for i := 0 to ComponentCount - 1 do
    if (Components[i] is TZCLabel) then
    begin
      ZCL := Components[i] as TZCLabel;
      ZCL.Font.Size := 10;
      ZCL.Caption := s;
      inc(num);
      if (num mod 5 in [1, 2, 3]) then
      begin
        ZCL.Transparent := false;
        ZCL.Color := clYellow;
      end else
      begin
        ZCL.Font.Size := 14;
        inc(ang, 50);
        //Угол поворота
        ZCL.Rotate := ang;
      end;
      //Выравнивание по горизонтали
      ZCL.AlignmentHorizontal := num mod 3;
      //Выравнивание по вертикали
      ZCL.AlignmentVertical := num mod 5;
    end; //if  
end;
void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
  int num = 0;
  int ang = 0;
  int t;
  TZCLabel * ZCL;
  String s = String("Пример текста") + sLineBreak + String("какой-то");
  //пробегаем по всем компонентам
  int i = 0;
  for (i = 0; i < ComponentCount; i++)
  {
    if (ZCL = dynamic_cast<TZCLabel *>(Components[i]))
    {
      ZCL->Font->Size = 10;
      ZCL->Caption = s;
      num++;
      t = num % 5;
      if ((t > 0) && (t < 4))
      {
        ZCL->Transparent = false;
        ZCL->Color = clYellow;
      } else
      {
        ZCL->Font->Size = 14;
        ang += 50;
        //Угол поворота
        ZCL->Rotate = ang;
      }
      //Выравнивание по горизонтали
      ZCL->AlignmentHorizontal = num % 3;
      //Выравнивание по вертикали
      ZCL->AlignmentVertical = num % 5;
    }
  }
}

Рисование на произвольном канвасе



ZCLabel рисование на канвасе

Пример кода для Lazarus/Delphi Пример кода для C++Builder-a
procedure TfrmMain.FormCreate(Sender: TObject);
var
  Rct: TRect;
  i: integer;
  t: byte;
  Cl: TColor;
  sEOL, s: string;

begin
  {$IFDEF FPC}
  sEOL := LineEnding;
  {$ELSE}
  sEOL := sLineBreak;
  {$ENDIF}

  ZCLabel1.Visible := false;

  Image1.Canvas.Brush.Color := clWhite;
  Image1.Canvas.Brush.Style := bsSolid;
  Image1.Canvas.Rectangle(0, 0, Image1.Width, Image1.Height);

  Rct.Left := 0;
  Rct.Top := 0;
  Rct.Right := 120;
  Rct.Bottom := 50;
  for i := 1 to 5 do
  begin
    ZCLabel1.Font.Size := 10 + i;
    //Рисует текст на канвасе цветом шрифта
    ZCLabel1.DrawTextOn(Image1.Canvas, 'Some text', Rct, false);
    Rct.Top := Rct.Top + 10;
    Rct.Bottom := Rct.Bottom + 10;
    Rct.Left := Rct.Left + 1;
    Rct.Right := Rct.Right + 1;
  end;

  Rct.Left := 0;
  Rct.Right := Image1.Width;
  Rct.Top := 0;
  Rct.Bottom := Image1.Height;
  
  i := 0;
  ZCLabel1.AlignmentVertical := 2;
  ZCLabel1.AlignmentHorizontal := 0;
  t := 255;
  while (i <= 90) do
  begin
    ZCLabel1.Rotate := i;
    cl := t shl 8;
    //Рисует текст на канвасе заданным цветом
    ZCLabel1.DrawTextOn(Image1.Canvas, 'Some text', Rct, cl, false);
    inc(i, 5);
    dec(t, 14);
  end;

  //Выравнивание
  ZCLabel1.AlignmentVertical := 0;
  ZCLabel1.AlignmentHorizontal := 2;
  i := 0;
  while (i <= 90) do
  begin
    ZCLabel1.Rotate := i;
    ZCLabel1.DrawTextOn(Image1.Canvas, 'Some text', Rct, false);
    inc(i, 10);
  end;

  ZCLabel1.Font.Size := 20;

  ZCLabel1.Rotate := -30;
  ZCLabel1.AlignmentVertical := 1;
  ZCLabel1.AlignmentHorizontal := 1;
  
  //Расстояние между строками
  ZCLabel1.LineSpacing := -10;

  s := 'ZClabel' + sEOL + 'пример рисования' + sEOL +
       'на произвольном канвасе';
  ZCLabel1.DrawTextOn(Image1.Canvas, s, Rct, clGreen, false);

  //Сохраним полученную картинку в файл
  Image1.Picture.Bitmap.SaveToFile({some_path}'1.bmp');
end;
void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
  ZCLabel1->Visible = false;

  TRect Rct;
  Rct.Left = 0;
  Rct.Top = 0;
  Rct.Right = 120;
  Rct.Bottom = 50;
  Graphics::TCanvas *CNV;

  CNV = Image1->Canvas;
  CNV->Brush->Color = clWhite;
  CNV->Brush->Style = bsSolid;
  CNV->Rectangle(0, 0, Image1->Width, Image1->Height);
  CNV->TextOut(10, 10, "dasd");
  String z = "Some text";

  int i = 0;
  for (i = 1; i < 6; i++)
  {
    ZCLabel1->Font->Size = 10 + i;
    //Рисует текст на канвасе цветом шрифта
    ZCLabel1->DrawTextOn(CNV, z, Rct, false);

    Rct.Top += 10;
    Rct.Bottom += 10;
    Rct.Left += 1;
    Rct.Right +=  + 1;
  }

  Rct.Left = 0;
  Rct.Right = Image1->Width;
  Rct.Top = 0;
  Rct.Bottom = Image1->Height;

  i = 0;
  ZCLabel1->AlignmentVertical = 2;
  ZCLabel1->AlignmentHorizontal = 0;
  int t = 255;
  TColor cl = clBlack;
  while (i <= 90)
  {
    ZCLabel1->Rotate = i;
    cl = t << 8;
    //Рисует текст на канвасе заданным цветом
    ZCLabel1->DrawTextOn(CNV, "Some text", Rct, cl, false);
    i += 5;
    t -= 14;
  }

  //Выравнивание
  ZCLabel1->AlignmentVertical = 0;
  ZCLabel1->AlignmentHorizontal = 2;
  i = 0;
  while (i <= 90)
  {
    ZCLabel1->Rotate = i;
    ZCLabel1->DrawTextOn(CNV, "Some text", Rct, false);
    i += 10;
  }

  ZCLabel1->Font->Size = 20;

  ZCLabel1->Rotate = -30;
  ZCLabel1->AlignmentVertical = 1;
  ZCLabel1->AlignmentHorizontal = 1;

  //Расстояние между строками
  ZCLabel1->LineSpacing = -10;

  String s = String("ZClabel") + sLineBreak + String("пример рисования") +
     sLineBreak + String("на произвольном канвасе");
  ZCLabel1->DrawTextOn(CNV, s, Rct, clGreen, false);

  //Сохраним полученную картинку в файл
  Image1->Picture->Bitmap->SaveToFile(/* some_path */"1.bmp");
}
ФайлыГлавнаяСсылкиФотографииАниме

Copyright © 2006-2012 Неборак Руслан Владимирович