С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/67: Рейтинг темы: голосов - 67, средняя оценка - 4.70
2 / 2 / 1
Регистрация: 18.11.2009
Сообщений: 43

Задание параметров для Anchors

22.01.2010, 20:13. Показов 12662. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
в TButton есть свойство Anchors, а в нем определены [akLeft, akTop, akRight, akBottom]
Как в коде устанавливать значения для [akLeft, akTop, akRight, akBottom] ?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.01.2010, 20:13
Ответы с готовыми решениями:

StatusBar + Anchors
Доброго дня.Ребят, как сделать что бы при разворачивании программы на весь экран последний элемент StatusBar1 Перемещался в право ? ...

StatusBar + PageControl (Anchors)
Доброго дня Подскажите как правильно решить мою проблему Одна и та же программа на разных ОС(Server 2003/7/8) выглядит по разному ...

Задание параметров для flash-объекта в HTML-файле запуска
Добрый вечер,всем!!! Только пытаюсь разобраться в AC 3.0. Нужно создать HTML-файл запуска и задать в нем параметры для...

22
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
24.01.2010, 00:49
Лучший ответ Сообщение было отмечено как решение

Решение

Можно так:
C++
1
Button1->Anchors = Button1->Anchors << akRight << akTop << akLeft;
Или вот так:
C++
1
2
3
4
TAnchors A;
A.Clear();
A = A << akRight << akBottom << akTop << akLeft;
Button1->Anchors = A;
5
2 / 2 / 1
Регистрация: 18.11.2009
Сообщений: 43
24.01.2010, 03:04  [ТС]
спасибо)
Если не сложно можешь сказать как эта штука правильно называется, чтобы почитать про нее можно было (A << akRight << akBottom << akTop << akLeft). Как работать с ней теперь понятно, но что это такое, понять не могу)
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
24.01.2010, 17:10
Лучший ответ Сообщение было отмечено как решение

Решение

DragoDemon,

<< - это оператор, выполняющий арифметический сдвиг разряда в левую сторону.
А - в моём примере, это переменная типа TAnchors.
akRight, akBottom, akTop, akLeft - константы перечисляемого типа, описанные в Controls.hpp:

C++
1
enum TAnchorKind { akLeft, akTop, akRight, akBottom };
2
 Аватар для ClearSky
7 / 7 / 0
Регистрация: 24.03.2010
Сообщений: 10
18.04.2010, 19:52
MiCr0s0fT, Добрый день! У меня подобная проблема, но с компонентом TTabbedNoteBook. Имеются 4 вкладки. На всех одинаковые элементы, скопированы были с первой вкладки. Анкоры для всех элементов выставлены как нужно. У меня на вкладках StringGrid и кнопки: кнопки должны сдвигаться вправо, сетка должна растягиваться до определённых размеров (Align = AllClient здесь мне не подходит).

При запуске программы, на той вкладке, которая открывается по умолчанию - всё идеально, растягивается и применяется как нужно. Но как только я переключаюсь на другую вкладку - все элементы на ней не применяют свои анкоры! Я пробовал прописывать анкоры в коде, как показано выше - дебаг показывает, что заходит в функцию и применяет анкоры (я так подозреваю) - но ничего не изменяется! Обработку делаю в событии OnChange:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm_Main::TabsChange(TObject *Sender, int NewTab,
      bool &AllowChange)
{
  if(NewTab == 0)
  {
    Grid0->Anchors = Grid0->Anchors << akRight << akBottom << akTop << akLeft;
  }
  if(NewTab == 1)
  {
    Grid1->Anchors = Grid2->Anchors << akRight << akBottom << akTop << akLeft;
  }
  if(NewTab == 2)
  {
    Grid2->Anchors = Grid2->Anchors << akRight << akBottom << akTop << akLeft;
  }
  if(NewTab == 3)
  {
    Grid3->Anchors = Grid3->Anchors << akRight << akBottom << akTop << akLeft;
  }
}
Ничего не происходит. Если выставляю по умолчанию вторую или 4 вкладку, к примеру, теперь на ней при запуске всё идеально - а на всех других ничего не применяется!

Подскажите, пожалуйста, как можно исправить эту проблему, сроки сдачи горят, а тут внезапно выскочил такой баг Заранее спасибо!
1
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.04.2010, 20:37
ClearSky, Добрый день.

1. То, что элементы потеряли свойства Anchors - вина компонента TTabbedNoteBook (Устарел он уже морально. Ещё с Windows 3.1 тянется). Взамен ему в RAD Studio реализован компонент TPageControl. Настоятельно рекомендую использовать его. Даже в дизайн-режиме ощутите разницу.

2. Присвоение Anchors не стоит делать при каждом переключении вкладки, зачем вам лишние действия...

3. А решение вашей проблемы описано мною чуть выше. Попробуйте вот так:
C++
1
2
3
4
  TAnchors A;
  A.Clear();
  A = A << akRight << akBottom << akTop << akLeft;
  Grid0->Anchors = A;  Grid1->Anchors = A;  Grid2->Anchors = A;  Grid3->Anchors = A;
2
 Аватар для ClearSky
7 / 7 / 0
Регистрация: 24.03.2010
Сообщений: 10
18.04.2010, 20:44
MiCr0s0fT, Спасибо за быстрый ответ!

Попробовал ваш способ - но ничего не изменилось - анкоры всё ещё не применяются. Может быть я использую не то событие, и не в том компоненте? ))
Вопрос: будет ли этот способ работать с TTabbedNotebook?

Почему я не использовал TTabConrol с вкладки Win32: я ставлю на вкладку кнопку - при переключении на все остальные вкладки - она там тоже видна - полная лажа )) Я так понял, что при этом надо использовать дополнительный компонент - TPageControl, о котором вы и говорите - но в нём я не нашёл свойства для задания имён и количества вкладок Может подскажете примером?
1
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.04.2010, 20:57
ClearSky, только что собрал проект с TTabbedNotebook (справа) и TPageControl (слева).
На каждой странице имеется TStringGrid. Попробуйте растянуть приложение - Anchors сброшены изначально. После нажатия на кнопку "Установить Anchors" - компоненты TStringGrid установят себе Anchors и будут изменять размер пропорционально окно.

Проект я прилагаю, скачать можете отсюда: TestAnchorsGrid.rar
Проект собран в RAD Studio 2010.
2
 Аватар для ClearSky
7 / 7 / 0
Регистрация: 24.03.2010
Сообщений: 10
18.04.2010, 21:04
MiCr0s0fT, Спасибо за пример!

Делаю точно так же, но внимание! Это работает ТОЛЬКО если нажать кнопку Установить Anchors сразу же после запуска приложения! Что же делаю я: я делаю Maximize окну - и потом жму на кнопку Установить Anchors - и всё, анкоры не применяются Может Maximize как-то сбрасывает анкоры?
1
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.04.2010, 21:21
ClearSky, вы имеете ввиду
C++
1
WindowState = wsMaximized;
???

Попробовал так:
C++
1
2
3
4
5
6
7
8
9
10
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  TAnchors A;
  A.Clear();
  A = A << akRight << akBottom << akTop << akLeft;
  StringGrid1->Anchors = A;  StringGrid2->Anchors = A;  StringGrid3->Anchors = A;  StringGrid5->Anchors = A;  StringGrid6->Anchors = A;
 
  WindowState = wsMaximized;
}
И точно также, только сначала установил wsMaximized.

Работает и так, и так.
1
 Аватар для ClearSky
7 / 7 / 0
Регистрация: 24.03.2010
Сообщений: 10
18.04.2010, 21:28
MiCr0s0fT, Я ставлю этот код в событие OnCreate моей формы - при запуске приложения. Пока что форма не развернута на весь экран - растягиваю - анкоры не применены. Затем я её разворачиваю по двойному клику на заголовке окна - окно разворачивается - анкоры не применены. Вынес дополнительно установку анкоров при нажатии на кнопку на форме (в кнопке прописал даже чтобы окно максимизировалось, как у вас в коде) - анкоры не применены. Без понятия, что может быть? Использую C++ Builder 6. На счёт вашего приложения я говорил когда просто запустил ЕХЕ файл, то есть в режиме run вашей программки - там тоже при развёрнутом окне не применялись анкоры.
1
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.04.2010, 21:34
ClearSky, инициализация формы наступит раньше её создания. Можно обойтись и без OnCreate.

Можно ещё попробовать обдурить всё и всех...
Обработайте событие OnResize для Form. И туда вставьте тот же код
1
 Аватар для ClearSky
7 / 7 / 0
Регистрация: 24.03.2010
Сообщений: 10
18.04.2010, 21:57
MiCr0s0fT, Я уже и об этом подумал ))) Просто мне показалось, что OnResize как-то тоже сбрасывает анкоры. )) Короче, не работает никак, хоть ты убейся ))))

Может быть поможет эта информация: при запуске проги, у меня стоит окно с вводом логина и пароля - по совместительству оно является главной формой. При верных данных - эта главная форма скрывается (Form->Hide() - и открывается та, с которой я работаю. Может быть как-то это скрытие предыдущей формы тоже влияет на это? )))

Хотя - всё это на самом деле никак на это не может влиять - так как если я устанавливаю у TabbedNoteBook по дефолту открывать вкладку - либо 1, либо 2, либо каку-то другую - на этой вкладке при запуске - всё работает идеально! Мистика, как будто анкоры применяются только для одной вкладки (это объяснилось вашим ответом о недостатке этого компонента) и потом они как-будто Read-Only становятся )))) Может быть есть какой-то AnchorRefresh() метод? Ну или Form->Refresh() как-то использовать? ))

Добавлено через 11 минут
MiCr0s0fT, Экспериментальным путём было установлено, что все вышеуказанные примеры работают ТОЛЬКО для той вкладки - которая является вкладкой по умолчанию при запуске! Мистика да и только - непонятно почему не применяются анкоры для других вкладок!

В голову приходит мысль: при запуске программы пройтись циклом и каждую из них сделать дефолтной, чтобы все акоры применились )))))) Чего только в голову не придёт, когда всё работает не так, как нужно
1
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
18.04.2010, 22:00
ClearSky, ой ужас ... Есть более интересное решение: Поставьте RAD Studio 2010 или 2009 (но не 2007).

Не мучайтесь. Данная неполадка - не ваша вина.
1
 Аватар для ClearSky
7 / 7 / 0
Регистрация: 24.03.2010
Сообщений: 10
18.04.2010, 22:06
MiCr0s0fT, А проект из C++ Builder 6 туда сможет мигрировать без проблем? Ибо мне его сдавать послезавтра, начинать всё переделывать не вариант И ещё вопрос: на счёт таблетки к RAD 2010 - можно будет заполучить её, на почту например? )) Я не могу найти, где тут отправлять личные сообщения на форуме, перерыл всё ))
1
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
19.04.2010, 00:22
ClearSky, на счёт таблетки - без проблем
По поводу ЛС - справа от ника есть стрелочка вниз, там всплывающее меню ... в нём "отправить личное сообщение"

Теперь по поводу миграции к RAD 2010.
В RAD Studio многие компоненты получили пополнительные события и методы. При открытии старых проектов происходит автообновление.
Изменению сильно подверглась вкладка Internet ... теперь владения перешли к InDy. (если у вас в проекте есть взаимодействие через компоненты TCPClient и подобные - лучше пока не обновляться)

В любом случае, ставьте RAD 2010 не удаляя BCB 6
2
 Аватар для ClearSky
7 / 7 / 0
Регистрация: 24.03.2010
Сообщений: 10
19.04.2010, 21:16
MiCr0s0fT, Спасибо, разобрался во всём!

Скачал RAD 2010, там таблетка только для Delphi... Есть для C++ Builder у вас?

Проблему анкоров решил просто через PageControl компонент, как вы и посоветовали ))) Так что, теперь всё идеально. Запустил RAD - красота, напоминает Visual Studio ))) Надо будет попробовать с ней поработать!
1
2 / 2 / 1
Регистрация: 18.11.2009
Сообщений: 43
21.04.2010, 20:22  [ТС]
Проблему с этими Анкорами я до сих пор так и не решил=)
вот на примере вашего приложения... если я правильно понял, то правая и левая таблицы должны растягиваться пропорционально, т.е. промежуток между ними должен оставаться неизменным, НО у меня по какой то причине ширина таблиц остается неизменной при растягивание, а промежуток между ними увеличивается

Что я делал:
  1. запустил ваш ехешник
  2. нажал "установить Анкоры"
  3. потянул за уголок

*прилагаю скриншот:
Миниатюры
Задание параметров для Anchors  
0
 Аватар для ClearSky
7 / 7 / 0
Регистрация: 24.03.2010
Сообщений: 10
22.04.2010, 23:22
Насколько я понял, в данном случае - показано растягивание самого компонента StringGrid по высоте, в данном случае, про расстояние между таблицами вроде никто не говорил.
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
23.04.2010, 17:12
DragoDemon, в своём приложении я показывал, как решается проблема с Anchors внутри StringGrid (почитайте предыдущую страницу, там есть вопрос от
ClearSky, или откройте код, посмотрите действие)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.04.2010, 17:12
Помогаю со студенческими работами здесь

Задание параметров в Simulink(+)
Вечер добрый. Один из способов задания параметров в Simulink - это через .m файл (в файле создаем переменные с присвоенными значениями, а...

Задание начальных параметров
Создал модель для решения ДУ в simulink, подскажите пожалуйста как установить параметры моделирования такого плана u(0.3) = 2.5, u(1.1) =...

Задание параметров сеанса
Всем доброго дня! Начала разбираться в RLS, столкнулась со следующей проблемой. В системе есть роль &quot;Юзер&quot;. Я задаю для нее...

Задание параметров на датчик 4-20
В кипе не давно, вопрос можно ли коим либо образом задать шкалу уровнемеру который имеет лишь токовую петлю и никаких более примочек типа...

TableLayoutPanel программное задание параметров
Подскажите почему не меняются первая строка и столбец по ширине и длине? TableLayoutRowStyleCollection styles =...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru