Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Обновление клиентской области MDI-формы  [new]
Virtual Student
Member

Откуда: Belarus
Сообщений: 289
Добрый день!
Рисую в клиентской области MDI-формы всякие подсказки для пользователей.
Подскажите, а как правильно перерисовывать эту самую клиентскую область после изменения текста?

Спасибо!
12 июл 18, 10:22    [21565053]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 24489
Virtual Student
в клиентской области

Нет такой компоненты...

А так: WM_PAINT в гугле.
12 июл 18, 10:31    [21565105]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6082
Virtual Student,

https://www.codeproject.com/Articles/8489/Getting-a-quot-Handle-quot-on-the-MDI-Client
12 июл 18, 10:32    [21565107]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
Василий 2
Member

Откуда:
Сообщений: 239
Из моих запасников

=========== заставить перерисовать клиентскую область MDI формы ===========

SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or SWP_NOMOVE or SWP_NOZORDER or SWP_NOSIZE);
12 июл 18, 10:41    [21565136]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
Virtual Student
Member

Откуда: Belarus
Сообщений: 289
wadman
Virtual Student
в клиентской области

Нет такой компоненты...

А так: WM_PAINT в гугле.

Пробовал - не помогает... :(
12 июл 18, 10:45    [21565163]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 24489
Virtual Student
wadman
пропущено...

Нет такой компоненты...

А так: WM_PAINT в гугле.

Пробовал - не помогает... :(

Грустька и печалька...

Код-то наверное секретный, раз словами описываешь?
12 июл 18, 10:47    [21565173]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
Virtual Student
Member

Откуда: Belarus
Сообщений: 289
Василий 2
Из моих запасников

=========== заставить перерисовать клиентскую область MDI формы ===========

SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or SWP_NOMOVE or SWP_NOZORDER or SWP_NOSIZE);

Чего-то и сие не помогло. :(
Видимо я где-то сообщения неправильно перехватываю. Буду разбираться.

Всем спасибо за внимание и содействие!
12 июл 18, 10:49    [21565184]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
Virtual Student
Member

Откуда: Belarus
Сообщений: 289
wadman
Virtual Student
пропущено...

Пробовал - не помогает... :(

Грустька и печалька...

Код-то наверное секретный, раз словами описываешь?

Да не особо секретный. Большой просто...
Мне бы такое лень читать было.
12 июл 18, 10:50    [21565187]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
Квейд
Member

Откуда: Kyiv, Ukraine
Сообщений: 5088
const
  RDW_REDRAWALL = RDW_FRAME
    or RDW_INVALIDATE
    or RDW_NOINTERNALPAINT
    or RDW_ALLCHILDREN;

RedrawWindow(YourMDIParentForm.ClientHandle, nil, 0, RDW_REDRAWALL);
?
12 июл 18, 10:58    [21565229]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
Квейд
Member

Откуда: Kyiv, Ukraine
Сообщений: 5088
Если не поможет, попробуй убрать RDW_NOINTERNALPAINT
12 июл 18, 10:59    [21565235]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
Василий 2
Member

Откуда:
Сообщений: 239
Virtual Student
Василий 2
Из моих запасников

=========== заставить перерисовать клиентскую область MDI формы ===========

SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_FRAMECHANGED or SWP_NOMOVE or SWP_NOZORDER or SWP_NOSIZE);

Чего-то и сие не помогло. :(
Видимо я где-то сообщения неправильно перехватываю. Буду разбираться.

Всем спасибо за внимание и содействие!

Просто кинь кнопку и повесь на нее этот код, для проверки. У меня работал
12 июл 18, 11:03    [21565260]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
LocksmithPC
Member

Откуда:
Сообщений: 172
"в клиентской области MDI-формы" и всё таки, это где?!
12 июл 18, 12:47    [21565767]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
LocksmithPC
Member

Откуда:
Сообщений: 172
Так что ли?

К сообщению приложен файл. Размер - 82Kb
12 июл 18, 13:02    [21565827]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
Virtual Student
Member

Откуда: Belarus
Сообщений: 289
LocksmithPC
Так что ли?

Да.
12 июл 18, 16:04    [21566401]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
зонд
Guest
Как выводите? Как пытаетесь обновлять?
Virtual Student
Да не особо секретный. Большой просто...
В таких случаях создают пустой проект и отдельно повторяют проблему.
13 июл 18, 00:33    [21567549]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
LocksmithPC
Member

Откуда:
Сообщений: 172
Virtual Student, тупо сделал так:

      Left := Left - 1;
      Top := Top - 1;
      Width := Width + 1;
      Height := Height + 1;

      Application.ProcessMessages;

      Left := Left + 1;
      Top := Top + 1;
      Width := Width - 1;
      Height := Height - 1;

      Application.ProcessMessages;
13 июл 18, 09:13    [21567823]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
Virtual Student
Member

Откуда: Belarus
Сообщений: 289
LocksmithPC
Virtual Student, тупо сделал так:

      Left := Left - 1;
      Top := Top - 1;
      Width := Width + 1;
      Height := Height + 1;

      Application.ProcessMessages;

      Left := Left + 1;
      Top := Top + 1;
      Width := Width - 1;
      Height := Height - 1;

      Application.ProcessMessages;

Оно работает.
Но я вас умоляю, - это же не кошерно!..
13 июл 18, 11:03    [21568094]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
LocksmithPC
Member

Откуда:
Сообщений: 172
Virtual Student, чо уж теперь :(
13 июл 18, 12:19    [21568406]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
зонд
Guest
Вы так и не показали как вы выводите ваш текст... "Я тут кое-где и кое-как вывожу текст, как мне вызвать перерисовку, что-то ничё не срабатывает?" Как же вам помогать?
13 июл 18, 13:49    [21568906]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1930
Virtual Student
Рисую в клиентской области MDI-формы всякие подсказки для пользователей.
Изначально, говнорешение. Подсказки должны быть в хинтах, скринтипах, тултипах или как раньше уже подсказали в статусбаре. Тебе какое окно надо перерисовать MDIForm или MDIChild? Если первое - используй ClientHandle для вызовов WinApi, если второе - то просто Repaint
13 июл 18, 14:09    [21569008]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
LocksmithPC
Member

Откуда:
Сообщений: 172
white_nigger, Через ClientHandle & WinAPI как?
13 июл 18, 14:26    [21569053]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
Virtual Student
Member

Откуда: Belarus
Сообщений: 289
white_nigger
Virtual Student
Рисую в клиентской области MDI-формы всякие подсказки для пользователей.
Изначально, говнорешение. Подсказки должны быть в хинтах, скринтипах, тултипах или как раньше уже подсказали в статусбаре. Тебе какое окно надо перерисовать MDIForm или MDIChild? Если первое - используй ClientHandle для вызовов WinApi, если второе - то просто Repaint

Дяденька (или тетенька), то, что должно быть абсолютно не соответствует пожеланиям пользователей, к сожалению... Я и сам бы рад, если бы они читали подсказки в "хинтах, скринтипах, тултипах", но к сожалению, у меня таки пользователи, что видят лишь то, что нарисовано "грубо" и жирным шрифтом. :)
P.S.: Пишу на Delphi приложения (и продаю их) аж с 2000 года.
P.S.S.: К сожалению, какие-то "преподаватели" впаривают студентам, что Delphi годиться только для обучения...
13 июл 18, 14:43    [21569125]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1930
LocksmithPC
white_nigger, Через ClientHandle & WinAPI как?
Да как хочешь. Хочешь ручками, хочешь - вешаешь свой WndProc и отрабатываешь WM_Paint (последнее использовал в нашей риббон форме)
13 июл 18, 15:02    [21569208]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
LocksmithPC
Member

Откуда:
Сообщений: 172
white_nigger, вопрос почему не срабатывает стандартный FormPaint в котором идет отрисовка. Update, Refresh, InvalidateRect, и даже прямой вызов FormPaint эффекта не дают. А изменение размера формы отрисовывает на ура.
13 июл 18, 15:31    [21569286]     Ответить | Цитировать Сообщить модератору
 Re: Обновление клиентской области MDI-формы  [new]
schi
Member

Откуда: Москва
Сообщений: 2601
LocksmithPC
white_nigger, вопрос почему не срабатывает стандартный FormPaint в котором идет отрисовка. Update, Refresh, InvalidateRect, и даже прямой вызов FormPaint эффекта не дают. А изменение размера формы отрисовывает на ура.


SPY++ тебе в помощь
13 июл 18, 16:35    [21569464]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить