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:З + 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:З + 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 Небарак Руслан Уладзіміравіч