Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 691

/ вопрос решён /

Здравствуйте, уважаемые эксперты!

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

Приложение:
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. var s:string;
  3. begin
  4. s:='Hello world';
  5. Canvas.Font.Size:=32;
  6. with Canvas do
  7. TextOut((ClientWidth-TextWidth(s)) div 2, (ClientHeight-textHeight(s)) div 2, s);
  8.  


vanechka Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: vanechka (статус: Посетитель)
Вопрос отправлен: 25 октября 2011, 15:29
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: DNK

Здравствуйте, vanechka!
Нужно четко себе представлять, когда можно работать с объектом Canvas, а именно, когда производится перерисовка визуального компонента системой. Например, для формы - это OnPaint, для других это может быть что-то вроде OnDraw, OnDrawItem и тп. В примере с кнопкой я полагаю тоже не всё гладко, наверняка если пронести над такой формой другую, то изображение на форме затрется. Поэтому код отрисовки нужно перенести в событие OnPaint.

Ответ отправил: DNK (статус: Студент)
Время отправки: 25 октября 2011, 16:26
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 14; последнее сообщение — 26 октября 2011, 14:20; участников в обсуждении: 4.
vanechka

vanechka (статус: Посетитель), 25 октября 2011, 15:30 [#1]:

Использовать нужно именно Canvas
DNK

DNK (статус: Студент), 25 октября 2011, 15:31 [#2]:

Бери всю эту шнягу и переноси OnPaint.
"Digital Networked Knight"
vanechka

vanechka (статус: Посетитель), 25 октября 2011, 15:39 [#3]:

Спасибо! все работает!
min@y™

min@y™ (статус: Доктор наук), 25 октября 2011, 15:39 [#4]:

Цитата (DNK):

Бери всю эту шнягу и переноси OnPaint.

Да, можно и в OnPaint формы отрисовку запихать, однако, проще, ИМХО, юзать специально заточенный под это дело компонент TPaintBox (в его событии OnPaint). Положить его на TPanel, с цвет которой будет цветом фона.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

25 октября 2011, 15:42: Статус вопроса изменён на решённый (изменил автор вопроса — vanechka)

min@y™

min@y™ (статус: Доктор наук), 25 октября 2011, 15:43 [#5]:

В качестве примера (как это выглядит на практике) можешь глянуть мой ответ на вопрос 5672.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
vanechka

vanechka (статус: Посетитель), 25 октября 2011, 15:57 [#6]:

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

25 октября 2011, 15:59: Вопрос вновь открыт (изменение состояния произвёл автор вопроса — vanechka)

min@y™

min@y™ (статус: Доктор наук), 25 октября 2011, 16:00 [#7]:

Цитата (vanechka):

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

Это я уже слышал.

Цитата (vanechka):

Какой вариант лучше будет?

Я ж сказал, с TPaintBox удобнее, ИМХО.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
vanechka

vanechka (статус: Посетитель), 25 октября 2011, 16:11 [#8]:

Компоненты Image и PaintBox представляют собой некоторую ограниченную поверхность с канвой, на которую можно заносить изображения. При этом компонент PaintBox, собственно говоря, не дает ничего нового по сравнению с рисованием на канве формы. Рисование на PaintBox вместо формы не имеет никаких преимуществ, кроме, может быть, некоторого облегчения в расположении одного или нескольких рисунков в площади окна.

http://beluch.ru/progr/100comp/4_3.htm если верить этому ресурсу
DNK

DNK (статус: Студент), 25 октября 2011, 16:28 [#9]:

vanechka: подчас это кроме может вылиться бальшой гемор
"Digital Networked Knight"
bugmenot

bugmenot (статус: 3-ий класс), 25 октября 2011, 16:46 [#10]:

DNK: на TImage можно рисовать когда не хочется морочиться с событиями
виконання програми розпочинається з того самого мiсця, де призупинилося.

min@y™

min@y™ (статус: Доктор наук), 25 октября 2011, 16:51 [#11]:

Цитата (bugmenot):

на TImage можно рисовать когда не хочется морочиться с событиями

Если рисовать меняющуюся картинку (анимацию), то придётся ещё и стирать предыдущие кадры. Моргать будет некисло.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
bugmenot

bugmenot (статус: 3-ий класс), 26 октября 2011, 13:16 [#12]:

Цитата (min@y™):

Моргать будет некисло.

Не будет, ради этого и задумывалось

Цитата (min@y™):

придётся ещё и стирать предыдущие кадры
Спасибо, кэп!
виконання програми розпочинається з того самого мiсця, де призупинилося.

min@y™

min@y™ (статус: Доктор наук), 26 октября 2011, 13:41 [#13]:

Цитата (bugmenot):

Не будет, ради этого и задумывалось

Прочитай вопрос ещё раз.

Цитата (bugmenot):

Спасибо, кэп!

Не за что!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
bugmenot

bugmenot (статус: 3-ий класс), 26 октября 2011, 14:20 [#14]:

Цитата (min@y™):

Прочитай вопрос ещё раз.

Дык у поциэнта ничего не вышло именно потому, что не имеет ни малейшего понятия как работает отрисовка окон. А TImage его бы изолировал от этого и одним банальным вопросом было бы меньше.
виконання програми розпочинається з того самого мiсця, де призупинилося.

26 октября 2011, 15:41: Статус вопроса изменён на решённый (изменил автор вопроса — vanechka)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.02 сек.