Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Выравнивание текста в Run-Time

302
24 декабря 2004 года
Sagittarius
648 / / 12.04.2003
Необходимо выравнивать текст по левому краю, по правому краю, по центру в обычном TEdit.
На этапе создания, данную проблему можно решить через CreateParams, а как быть во время работы приложения, когда все компаненты уже созданы?
10
24 декабря 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Sagittarius
На этапе создания, данную проблему можно решить через CreateParams, а как быть во время работы приложения, когда все компаненты уже созданы?


SetWindowLong еще никто не отменял.

302
24 декабря 2004 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by smartsoft
SetWindowLong еще никто не отменял.


Согласен. Но он не работает. :)
Если бы изменение стиля с помощью это функции работало бы, то в форуме этого поста не было бы. :)

259
24 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Sagittarius

Согласен. Но он не работает. :)
Если бы изменение стиля с помощью это функции работало бы, то в форуме этого поста не было бы. :)


А почему не использовать TRichEdit?

302
24 декабря 2004 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by AlexandrVSmirno А почему не использовать TRichEdit?


Мне нужна функциональность TEdit и ничего больше.

259
24 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Sagittarius

Мне нужна функциональность TEdit и ничего больше.


А ручками равнять не пробовал?

302
24 декабря 2004 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by AlexandrVSmirno А ручками равнять не пробовал?


Ну если ты такой умный, напиши как это сделать? Если бы я знал как, я бы наверное не задавал бы этот вопрос. Ага?

259
24 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Sagittarius

Ну если ты такой умный, напиши как это сделать? Если бы я знал как, я бы наверное не задавал бы этот вопрос. Ага?


На Билдере прокатит? Мне Паскаль вспоминать нужно.

302
24 декабря 2004 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by AlexandrVSmirno На Билдере прокатит? Мне Паскаль вспоминать нужно.


Прокатит конечно. Не первый день программируем-с. :)

259
24 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Sagittarius

Прокатит конечно. Не первый день программируем-с. :)


Ну приблизительно вот так:

Код:
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
//По левому краю
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     AnsiString Res;
     Res.SetLength(Edit1->Text.Length());
     int fTPos;
     for(int i=1;i<Edit1->Text.Length();i++)
     {
        if(Edit1->Text != ' ')
        {
           fTPos = i;
           break;
        }
     }
     int j=1;
     for(int i=fTPos;i<=Edit1->Text.Length();i++)
        Res[j++]=Edit1->Text;
     Res[j] = 0;
     Edit1->Text = Res;
}
//---------------------------------------------------------------------------
//По правому краю
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   AnsiString Res;
   int fTPos;
   for(int i=1;i<Edit1->Text.Length();i++)
   {
      if(Edit1->Text != ' ')
      {
         fTPos = i;
         break;
      }
   }
   int textLen = Form1->Canvas->TextWidth(Edit1->Text.SubString(fTPos,Edit1->Text.Length() - fTPos+1));
   int spaceLen = Form1->Canvas->TextWidth(" ");
   int maxChar = Edit1->Width;
   int j=(Edit1->ClientWidth-textLen)/spaceLen;
   Res.SetLength(maxChar);
   for(int i=1;i<j;i++)
      Res = ' ';
   int i = 0;
   int allLen = j + Edit1->Text.Length();
   for(i=j;i<allLen;i++)
      Res = Edit1->Text[fTPos++];
   Res = 0;
   Edit1->Text = Res;
}
//---------------------------------------------------------------------------
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог