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

Ваш аккаунт

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

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

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

Текст в RoundRect

1.9K
27 января 2004 года
elderb
61 / / 26.01.2004
Прошу прощения за разнобой в вопросах подскажите пожалуйста
1. Как можно закрепить текст в фигуре RoundRect к примеру нужно начертить структурную схему чего-ниибудь(прямоугольник в нем текст, линия соединения, следующий прямоугольник с текстом и тд)Прямоугольник - RoundRect, Текст - TextOutA. Чтобы нарисовать TextOutA всередине фигуры надо знать размеры текстовой области, а у TextOutA в свойствах их нет.
2. Как передать данные из Unit1.cpp в Unit2.cpp
и наоборот.Например Form1 основное окно, а в Form2 настройки первого окна допустим размеры,как передатьданные вводимые в Form2 окну Form1?
Спасибо
2.6K
27 января 2004 года
Hearse
89 / / 19.01.2004
BOOL GetCharWidth32(
HDC hdc, // handle to DC
UINT iFirstChar, // first character in range
UINT iLastChar, // last character in range
LPINT lpBuffer // buffer for widths
);

ширина букв от iFirstChar до iLastChar, заносится в lpBuffer, высота шрифта это ясно.

Чтобы формы видели друг друга на сделать #include "unit1.h"(или .hpp)в unit2.cpp и наоборот я хоткей на это дело по-моему Alt+F11.
401
27 января 2004 года
Br@in RIPper
289 / / 15.02.2003
Цитата:
Originally posted by elderb
Прошу прощения за разнобой в вопросах подскажите пожалуйста
1. Как можно закрепить текст в фигуре RoundRect к примеру нужно начертить структурную схему чего-ниибудь(прямоугольник в нем текст, линия соединения, следующий прямоугольник с текстом и тд)Прямоугольник - RoundRect, Текст - TextOutA. Чтобы нарисовать TextOutA всередине фигуры надо знать размеры текстовой области, а у TextOutA в свойствах их нет.
2. Как передать данные из Unit1.cpp в Unit2.cpp
и наоборот.Например Form1 основное окно, а в Form2 настройки первого окна допустим размеры,как передатьданные вводимые в Form2 окну Form1?
Спасибо



чтобы узнать размер строки в пикселях (ширину и высору) используй GetTextExtentPoint32

1
27 января 2004 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by elderb
Прошу прощения за разнобой в вопросах подскажите пожалуйста
1. Как можно закрепить текст в фигуре RoundRect к примеру нужно начертить структурную схему чего-ниибудь(прямоугольник в нем текст, линия соединения, следующий прямоугольник с текстом и тд)Прямоугольник - RoundRect, Текст - TextOutA. Чтобы нарисовать TextOutA всередине фигуры надо знать размеры текстовой области, а у TextOutA в свойствах их нет.


Код:
TCanvas *pCanvas = Image->Canvas;
int PosGor=40,PosVer=40;
TRect Num;
Num.Left = PosGor;
Num.Right = PosGor+pCanvas->TextWidth("№ п/п")+1;
Num.Top = PosVert;
Num.Bottom = PosVert+pCanvas->TextHeight("№ п/п")+40;
pCanvas->Pen->Color = clWindowText;
pCanvas->Font->Size = 10;
pCanvas->Brush->Color = clActiveCaption;
pCanvas->Font->Color = clWhite;
pCanvas->TextRect(Num,Num.Left+1,Num.Top+10,"№ п/п");
pCanvas->Brush->Color = clBlack;
pCanvas->FrameRect(Num);

Нарисует закрашенный прямоугольник с размерами по вертикали и по горизонтали больше чем текст внутри
его. Для получения высоты текста используется функция pCanvas->TextHeight("№ п/п"); сответственно ширину дает pCanvas->TextWidth("№ п/п")
С RowndRect все немного сложнее - я пытался рисовать сначала закругленный прямойгольник - а по верх его прямоугольник с текстом - но толку не было(или плохо пытался). На форуме предложили использовать для этих целей TShape+Label. Если нужно выводить только текст - то этого вполне достаточно - я для своих целей использовал TShape+TPaintBox. Но вообще для серьезных задач имеет смысл потратить время и организовать вывод через собственный класс.
Цитата:
Originally posted by elderb

2. Как передать данные из Unit1.cpp в Unit2.cpp
и наоборот.Например Form1 основное окно, а в Form2 настройки первого окна допустим размеры,как передатьданные вводимые в Form2 окну Form1?
Спасибо


Вывод может быть передан как через
#include "Unit1.h" во второй форме, тогда к открытым перемеменным класса можно обратится из второй формы напрямую:

 
Код:
Form1->AnyPablic=Any;

Можно объявить класс второй формы дружественным - тогда ты можешь получить доступ и к защищенным переменным.
Можно передать параметры через реестр, тогда по событию onPaint форма просто будет перечитывать свои параметры, можно через функцию вне класса...
1.9K
18 февраля 2004 года
elderb
61 / / 26.01.2004
С этим всё замечательно определил размеры прямоугольника через размеры текста + дельта(для эстетики :D то же с шириной, вот с разбиением текста на куски придется попариться devil: ) Спасибо.:)
Кто знает подскажитеможно ли в Билдере реализовать многослойный рисунок (к примеру на нижнем слое фон, на верхнем какой-нибудь объект, который бде двигаться относиительно фонатаки образом что бы реализовать движение не было-бы необходимости перерисовывать всю канву заново)
1.9K
24 февраля 2004 года
elderb
61 / / 26.01.2004
Цитата:

Вывод может быть передан как через
#include "Unit1.h" во второй форме, тогда к открытым перемеменным класса можно обратится из второй формы напрямую:
 
Код:
Form1->AnyPablic=Any;


Небольшая проблемка с переменными работает, а вот с функциями нет. Например в Unit2.cpp объявлена функция

 
Код:
void func();
void func(){
.........
}

а в Unit1.cpp её вызов
 
Код:
func();

При компиляции происходит ошибка Call to undefinit function 'func', не спасает и обращение Form2->func();
Ошивка 'func'is not a member of TForm2
Unit'ы прописаны в обоих формах. Так в чем же дело?
5.4K
25 февраля 2004 года
SergKO
29 / / 24.02.2004
Цитата:
Originally posted by elderb

Небольшая проблемка с переменными работает, а вот с функциями нет. Например в Unit2.cpp объявлена функция
 
Код:
void func();
void func(){
.........
}

а в Unit1.cpp её вызов
 
Код:
func();

При компиляции происходит ошибка Call to undefinit function 'func', не спасает и обращение Form2->func();
Ошивка 'func'is not a member of TForm2
Unit'ы прописаны в обоих формах. Так в чем же дело?



Функция func() объявлена в public'e?

1.9K
25 февраля 2004 года
elderb
61 / / 26.01.2004
Цитата:
Originally posted by SergKO


Функция func() объявлена в public'e?


Не была. После объявления дело пошло на поправку
:) Спасибо.правда появилось еще два вопроса если не втягость, объясните. Заранее благодарен.

1. Как сделать так, чтобы к функциям описанным в другом файле можно было обращаться без указателя на форму (как это организовано со стандартными функциями)Напр. Не Form2->printf("");,a просто printf("");

2. Как правильно использовать переменные другого Unit.cpp. Читал что просто нужно поставить extern перед объявлением переменной (extern int а) даже можно не включать юниты друг в друга(#include"Unit1.h"), но почему-то использовать переменные можно только включив юниты, определив в Unit.h переменные как public и только виде Form1->a=10; :(

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог