Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> About text output 
:(
    Опции темы
muratboy31
  Дата 16.3.2011, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 7.1.2010

Репутация: нет
Всего: нет



go to last post...

Это сообщение отредактировал(а) muratboy31 - 17.3.2011, 14:23
PM MAIL   Вверх
muratboy31
Дата 16.3.2011, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 7.1.2010

Репутация: нет
Всего: нет



i tried something like that but it didnt work... why is that ???

Код

procedure TForm1.FormCreate(Sender: TObject);
var
a, b, c, d, e, f: string;
begin
a := 'Frank';
b := 'Mark';
c := 'Jack';
d := 'Julia';
e := 'Emily';
f := 'Isabella';
if Length(a) > Length(b) and Length(c) and Length(d) and Length(e) and Length(f) then
Label1.Caption := a
else
if Length(b) > Length(a) and Length(c) and Length(d) and Length(e) and Length(f) then
Label1.Caption := b
else
if Length(c) > Length(a) and Length(b) and Length(d) and Length(e) and Length(f) then
Label1.Caption := c
else
if Length(d) > Length(a) and Length(b) and Length(c) and Length(e) and Length(f) then
Label1.Caption := d
else
if Length(e) > Length(a) and Length(b) and Length(c) and Length(d) and Length(f) then
Label1.Caption := e
else
if Length(f) > Length(a) and Length(b) and Length(c) and Length(d) and Length(e) then
Label1.Caption := f;
end;

PM MAIL   Вверх
MetalFan
Дата 16.3.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Please specify initial task...
You try to find longest string?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
muratboy31
Дата 16.3.2011, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 7.1.2010

Репутация: нет
Всего: нет



yes but also make others align center according to it

Это сообщение отредактировал(а) muratboy31 - 16.3.2011, 17:23
PM MAIL   Вверх
MetalFan
Дата 16.3.2011, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



this example will work in Delphi since 2007... when was added Canvas.TextRect method. If you need a older version support, change it to windows.DrawText procedure.
Код

var
  lStrArr: [0..5] of string;
  i: integer;
  lIdx: integer;
  lRect: TRect;
begin
//1. Put all your strings in dynamic or static array
  lStrArr[0] := a;
...
  lStrArr[5] := f;
...
//2. Find widest
  lIdx := 0;
  for i := succ(low(lStrArr)) to high(lStrArr) do
     if SomeCanvas.TextWidth(lStr[lIdx]) < SomeCanvas.TextWidth(lStrArr[i]) then
      lIdx := i;
//3. Send it to canvas

//Detect biggest rect
  lRect := Rect(0,0,0,0);
  SomeCanvas.TextRect( lRect, lStrArr[lIdx], [tfSingleLine, tfCalcRect]);
//Set offset of first string
  OffsetRect( lRect, 10, 100);
//print
  for i := low(lStrArr) to high(lStrArr) do
  begin
    SomeCanvas.TextRect( lRect, lStrArr[i], [tfSingleLine, tfCenter]);
    //inc next line vertical offset
    OffsetRect( lRect, 0, lRect.Bottom - lRect.Top + 5); 
  end;


maybe this template will help you to solve your task.
good luck.


Это сообщение отредактировал(а) MetalFan - 16.3.2011, 23:25


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
muratboy31
Дата 17.3.2011, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 7.1.2010

Репутация: нет
Всего: нет



thanks alot for helping but there is a problem...

 lStrArr: [0..5] of string;  for  this line it says : E2029 type expected but '[' forund ..  why is that ???

i am using delphi 2010
PM MAIL   Вверх
MetalFan
Дата 17.3.2011, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



it was only a template, I did not check possible errors or mistakes.
Of course in this place must be following:
lStrArr: array [0..5] of string;
If you don't know, how to declare arrays, please read some book for beginners.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
muratboy31
Дата 17.3.2011, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 7.1.2010

Репутация: нет
Всего: нет



follow below

Это сообщение отредактировал(а) muratboy31 - 17.3.2011, 14:22
PM MAIL   Вверх
MetalFan
Дата 17.3.2011, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Before calling TextRect for bolding text set Canvas.Font.Style to [fsBold], after TextRect set style back to [];
Maybe you need to make the same in loop where widest string is calculating.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
muratboy31
Дата 17.3.2011, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 7.1.2010

Репутация: нет
Всего: нет



i tried like that but it didnt work !!!

Код

procedure TForm1.Button2Click(Sender: TObject);
var
  lStrArr: array [0..5] of string;
  c: integer;
  lIdx: integer;
  lRect: TRect;
begin
PrintPreview1.BeginDoc;

       lStrArr[0] := Edit1.text;

       lStrArr[1] := Edit2.text;

       lStrArr[2] := Edit3.text;

       lStrArr[3] := Edit4.text;

       lStrArr[4] := Edit5.text;

       lStrArr[5] := Edit6.text;


        lIdx := 0;
         for c := succ(low(lStrArr)) to high(lStrArr) do
     if PrintPreview1.Canvas.TextWidth(lStrArr[lIdx]) < PrintPreview1.Canvas.TextWidth(lStrArr[c]) then
      lIdx := c;


       lRect := Rect(0,0,0,0);
  PrintPreview1.Canvas.TextRect( lRect, lStrArr[lIdx], [tfSingleLine, tfCalcRect]);

  OffsetRect( lRect, 1000, 1500);
  for c := low(lStrArr) to high(lStrArr) do
  begin
PrintPreview1.Canvas.Font.Style:=PrintPreview1.Canvas.Font.Style+[fsBold];
    PrintPreview1.Canvas.TextRect( lRect, lStrArr[0], [tfSingleLine, tfCenter]);
    PrintPreview1.Canvas.TextRect( lRect, lStrArr[1], [tfSingleLine, tfCenter]);
    PrintPreview1.Canvas.TextRect( lRect, lStrArr[2], [tfSingleLine, tfCenter]);
PrintPreview1.Canvas.Font.Style:=PrintPreview1.Canvas.Font.Style-[fsBold];
    PrintPreview1.Canvas.TextRect( lRect, lStrArr[3], [tfSingleLine, tfCenter]);
    PrintPreview1.Canvas.TextRect( lRect, lStrArr[4], [tfSingleLine, tfCenter]);
    PrintPreview1.Canvas.TextRect( lRect, lStrArr[5], [tfSingleLine, tfCenter]);

    OffsetRect( lRect, 0, lRect.Bottom - lRect.Top + 5);
end;
PrintPreview1.EndDoc;
end;

PM MAIL   Вверх
MetalFan
Дата 17.3.2011, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



muratboy31, you are crazy coder. please read some books about Delphi for beginners or just try to understand what to do your code.
I will not help you anymore.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0561 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.