Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/14: Рейтинг темы: голосов - 14, средняя оценка - 4.93
varkan
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 17
#1

Выравнивание текста в TEdit

06.02.2015, 13:28. Просмотров 2547. Ответов 14
Метки нет (Все метки)

День добрый.

Вопрос.
Есть Edit1, Edit2 в них текст. Требуется выровнять текст
1. по правой стороне Edit1,
2. по центру в Edit2

Вариант с BiDiMode не работает.

Спасибо за помощь.


PS ответа на форуме не нашел, если такой есть, ткните носом.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2015, 13:28
Ответы с готовыми решениями:

Выравнивание текста в ячейке по вертикали в зависимости от высоты текста
Подскажите, есть ли возможность прорисовывать текст в ячейке грида, в...

Выравнивание текста в ячейке грида при вводе текста
Вечер добрый. Не подскажите, у меня выравнивание работает (по вертикале и 5...

Изменение цвета текста Label в зависимости от TEdit
имеется два поля tedit по нажатии button, происходят некоторые вычисления и в...

Drag&Drop выделенного текста между компонентами TMemo, TListBox и TEdit
Здраствуйте. У меня такое вот задание: Используя Drag&Drop, сделать возможным...

ListBox выравнивание текста
может у кого есть код переноса текста на новую строку если текст не...

14
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25956 / 17403 / 6903
Регистрация: 22.10.2011
Сообщений: 30,640
Записей в блоге: 6
06.02.2015, 13:32 #2
У Edit-а есть свойство Alignment, прямо в Object Inspector-е выставь первому в taRightJustify, второму - в taCenter
0
varkan
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 17
06.02.2015, 13:35  [ТС] #3
такого свойства у Edit-а нет. (PS С++ Builder 6)
Название: 1.png
Просмотров: 162

Размер: 6.9 Кб
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25956 / 17403 / 6903
Регистрация: 22.10.2011
Сообщений: 30,640
Записей в блоге: 6
06.02.2015, 13:37 #4
Цитата Сообщение от varkan Посмотреть сообщение
С++ Builder 6
В мусор.

Тысячу раз говорил - хотите решать задачу - берите современные средства разработки, хотите изобретать костыли, необходимые чтобы потом начать решать задачу - берите Билдер 5 или 6. Ты свой выбор сделал, а я костылями не занимаюсь...
0
varkan
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 17
06.02.2015, 13:39  [ТС] #5
спасибо за помощь.

еще варианты?
0
SatanaXIII
Супер-модератор
Эксперт С++
5773 / 2772 / 376
Регистрация: 01.11.2011
Сообщений: 6,744
Завершенные тесты: 1
06.02.2015, 13:47 #6
Цитата Сообщение от varkan Посмотреть сообщение
еще варианты?
C++
1
2
int EditWidth = Edit1->Width ;
int EditTextWidth = this->Canvas->TextWidth( Edit1->Text );
Развлекайтесь.

Цитата Сообщение от volvo Посмотреть сообщение
У Edit-а есть свойство Alignment
Оно наверное внутри тоже относительно канвы просто смещает текст, да?
0
varkan
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 17
06.02.2015, 13:52  [ТС] #7
а можно весь текст программы?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25956 / 17403 / 6903
Регистрация: 22.10.2011
Сообщений: 30,640
Записей в блоге: 6
06.02.2015, 13:56 #8
Лучший ответ Сообщение было отмечено varkan как решение

Решение

SatanaXIII, ну я для кого про перехватчики писал?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// в Header-файле, перед описанием класса формы
namespace Aligned_Edit
{
    class TEdit : public Stdctrls::TEdit
    {
    private:
        int FStyle;
        void MySetStyle(int AStyle)
        {
            if(AStyle != FStyle)
            {
                FStyle = AStyle;
                RecreateWnd();
            }
        }
 
    protected:
        virtual void __fastcall CreateParams(Controls::TCreateParams &Params)
        {
            Stdctrls::TEdit::CreateParams(Params);
            Params.Style |= FStyle;
        }
 
    public:
        __fastcall virtual TEdit(Classes::TComponent* AOwner)
            : Stdctrls::TEdit(AOwner)
        {
            FStyle = ES_LEFT;
        }
        __property int MyAlignment = { read=FStyle, write=MySetStyle };
    };
};
#define TEdit Aligned_Edit::TEdit
 
// Дальше - класс формы, как обычно
class TForm1 : public TForm
, изменять очень просто:
C++
1
2
    Edit1->MyAlignment = ES_RIGHT;
    Edit2->MyAlignment = ES_CENTER;
Оно надо, такие велосипеды писать? Мазохизм какой-то просто...
3
varkan
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 17
06.02.2015, 13:59  [ТС] #9
Спасибо большое!

Все работает!

Тема закрыта.
0
SatanaXIII
Супер-модератор
Эксперт С++
5773 / 2772 / 376
Регистрация: 01.11.2011
Сообщений: 6,744
Завершенные тесты: 1
06.02.2015, 15:16 #10
volvo, перехватчик да, как работает стиль? При отрисовке эдита он сдвигает текст в середину канвы этого же эдита? Или там какая-то магия?
0
ivan.-94
Я Фоюмчанин ? дааааа)
209 / 200 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
06.02.2015, 15:49 #11
SatanaXIII, Если я правильно понимаю volvo у эдита создал какой то объек Param и у него значение Style меняется.
Тогда судя по всему, если я правильно понимаю, как происходит отрисовка знает только билдер - в нем это реализовано.
0
ivan.-94
Я Фоюмчанин ? дааааа)
209 / 200 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
06.02.2015, 16:01 #12
На доквики эмбаркадеро тишина по TCreateParams.
volvo, а я вот тут посмотрел TEdit и подумал - а может можно было проще?
Выравнивание текста в TEdit
0
ivan.-94
Я Фоюмчанин ? дааааа)
209 / 200 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
06.02.2015, 16:07 #13
Хотя нет я не прав
C++
1
2
3
4
5
6
7
8
9
namespace Aligned_Edit
{
    class TEdit : public Stdctrls::TEdit
    {
    public:
        using Stdctrls::TEdit::Alignment;
    };
};
#define TEdit Aligned_Edit::TEdit
Не работает
А ну я сглупил)))
На Embarcadero ведь справка для 2010 версий компилятора и ++
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25956 / 17403 / 6903
Регистрация: 22.10.2011
Сообщений: 30,640
Записей в блоге: 6
06.02.2015, 16:08 #14
Цитата Сообщение от SatanaXIII Посмотреть сообщение
При отрисовке эдита
Нет, не при отрисовке, а при создании окна. Окно Edit-а создается с нужным стилем, задающим выравнивание. При смене стиля окно просто пересоздается заново, "всего и делов то" (С) "Осенний марафон"

Цитата Сообщение от ivan.-94 Посмотреть сообщение
На доквики эмбаркадеро тишина по TCreateParams
Просто CreateParams, TCreateParams, где ж тишина?
1
ivan.-94
Я Фоюмчанин ? дааааа)
209 / 200 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
06.02.2015, 16:22 #15
volvo, просто я искал:
Выравнивание текста в TEdit

Но все норм если искать Vcl.Controls и у него TCreateParams
0
06.02.2015, 16:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2015, 16:22

RichEdit - выравнивание текста
Прива, пацпны как можно запрограмировать кнопку виравнивание таекста "С лева"?

Выравнивание текста в TRichEdit
На форме два компонента. TRichEdit и TSpinEdit. Нужно чтобы при изменении...

Выравнивание текста TRichEdit по ширине
Здравствуйте! Нужна помощь в написании кода для выравнивания текста в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru