Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648

TChart, найти середину окна с графиками без отступов по горизонтали

09.07.2018, 13:02. Показов 1539. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно найти середину по-горизонтали окна Chart, где непосредственно рисуются графики. Отступы слева и справа не учитывать.
Пытаюсь оттолкнуться от BottomAxis->MarginLeft, но она почему-то всегда 0.
C++
1
2
3
    Chart1->MarginLeft = 4;
    Chart1->MarginRight = 12;
    int x = Chart1->BottomAxis->MarginLeft;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.07.2018, 13:02
Ответы с готовыми решениями:

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

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

Как узнать размеры рамки окна и его отступов?
Всем привет! Делаю программу, которой нужно получить только рабочую область окна игр. Когда игра "на весь экран", то проблем...

16
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
09.07.2018, 13:13
(BottomAxis->IEndPos - BottomAxis->IStartPos) / 2 же, нет?
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
09.07.2018, 13:20  [ТС]
volvo,
C++
1
2
3
4
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
    ...
    int x = (Chart1->BottomAxis->IEndPos - Chart1->BottomAxis->IStartPos) / 2;
x всегда = 0 !?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
09.07.2018, 13:22
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

В конструкторе формы? А чего ты ожидал там увидеть?
1
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
09.07.2018, 13:22
jkrnd, может вынести из конструктора формы в обработчик FormShow?

Добавлено через 16 секунд
volvo, опередили
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
09.07.2018, 13:30  [ТС]
лоханулся, согласен

Добавлено через 4 минуты
C++
1
2
3
void __fastcall TForm1::FormShow(TObject *Sender)
{
    int x = (Chart1->BottomAxis->IEndPos - Chart1->BottomAxis->IStartPos) / 2;
x всё равно ноль!
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
09.07.2018, 14:27
А посмотрите в отладчике, чему равны значения IEndPos и IStartPos, может они дробные и меньше 0.

Добавлено через 9 минут
Странно, кинул на форму TChart, никаких изменений в ObjectInspector, обработчик FormShow
C++
1
2
    int x = (Chart1->BottomAxis->EndPosition /*=0*/- Chart1->BottomAxis->StartPosition/*=100*/)/2;
    ShowMessage(IntToStr(x));
Получил x=50

Добавлено через 2 минуты
Цитата Сообщение от volvo Посмотреть сообщение
BottomAxis->IEndPos - BottomAxis->IStartPos
я таких свойств IEndPos/IStartPos у BottomAxis не увидел (Builder 6). Или я не тот компонент взял? (TChart с вкладки Additional)
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
09.07.2018, 15:04  [ТС]
Цитата Сообщение от TrollHammer Посмотреть сообщение
Получил x=50
попробовал - то же самое получил.
EndPosition и StartPosition - это не то что мне надо.
Builder 6.
IEndPos и IStartPos появляются набрав Chart1->BottomAxis-> и вызвав подсказку среды.

Добавлено через 47 секунд
TChart - с вкладки Additional
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
09.07.2018, 15:11
Просто IStartPos и IEndPos не инициализированы
Миниатюры
TChart, найти середину окна с графиками без отступов по горизонтали  
1
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
09.07.2018, 15:14
И читаем справку
Миниатюры
TChart, найти середину окна с графиками без отступов по горизонтали  
1
09.07.2018, 15:16

Не по теме:

Поэтому немного не по теме - на мой взгляд, лучше рисовать графики "вручную", а библиотекой, как и обещал, в ближайшем времени поделюсь, надо только отобрать то, что могу выложить

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
09.07.2018, 15:17
jkrnd, Ну вот я взял и написал:

C++
1
2
3
4
5
void __fastcall TForm1::Chart1AfterDraw(TObject *Sender)
{
    TChart* obj = static_cast<TChart*>(Sender);
    Caption = IntToStr((obj->BottomAxis->IEndPos - obj->BottomAxis->IStartPos) / 2);
}
, и мне корректно написало в заголовке формы X-координату середины рабочей области. Что я сделал не так?
2
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
09.07.2018, 15:22
volvo, Интересное решение, возьму с Вашего позволения, на заметку. Спасибо.
1
09.07.2018, 15:24

Не по теме:

Цитата Сообщение от TrollHammer Посмотреть сообщение
на мой взгляд, лучше рисовать графики "вручную"
Угу... И все типы графиков, которые есть в TChart-е, т которые "вот прямо сейчас" понадобится использовать заказчику - прямо "вручную" проще нарисовать? И с масштабированием, с легендами, с градиентами там, где они нужны? Не верю. Это либо будет очень ограниченная либа, которая умеет доли процента от того, что умеет TChart (да, да, я тоже такие писал когда-то, но не на Дельфи/Билдере), либо это будет нечто неповоротливое, огромное и глючащее (потому что одному вручную сделать то же самое, чем занимается много лет Steema Software - нереально).

0
09.07.2018, 15:26

Не по теме:

Цитата Сообщение от volvo Посмотреть сообщение
Не верю
Соглашусь, но если надо нарисовать график под узко заточенный процесс - для меня проще "заморочиться" вручную.

0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
09.07.2018, 15:27  [ТС]
volvo, всё так, только задача стоит позиционировать некий компонент относительно окна Chart при загрузке программы.
0
09.07.2018, 15:33

Не по теме:

volvo, кстати сейчас как раз и занимаюсь этой задачей :) на Builder 10.2 Tokyo Starter компонента TChart нет :(

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.07.2018, 15:33
Помогаю со студенческими работами здесь

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

Шапка из рисунков без отступов
Добрый день помогите сделать так Шапку из рисунков без отступов.

Вставить надпись в середину окна
Помогите вставить надпись в середину окна? .model small .stack 100h .data mesg db &quot;Hi All!!! $&quot; .code start: ...

Выравнивание блоков на 100% по ширине и высоте без зазоров и отступов
Ребят, я начинаю свой путь в верстке и постоянно сталкиваюсь с проблеммой выравнивания блоков на 100% по ширине и высоте. Блоки вечно...

Заполнить Div другими дивами без отступов и пробелов между ними!
Всем доброго времини суток! Ситуация следующая: Представьте, есть DIV шириной в 500px, в него с помощью цикла for помещяются другие div...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru