Как я использую 'текст заполнителя' в win32 средствах редактирования?

Переменные, объявленные в определении класса, но не в методе, являются переменными класса или статическими переменными:

>>> class MyClass:
...     i = 3
...
>>> MyClass.i
3 

Как millerdev указывает, это создает переменную уровня класса i, но это отлично от любой переменной уровня экземпляра i, таким образом, Вы могли иметь

>>> m = MyClass()
>>> m.i = 4
>>> MyClass.i, m.i
>>> (3, 4)

, Это отличается от C++ и Java, но не так отличается от C#, где к статическому участнику нельзя получить доступ с помощью ссылки на экземпляр.

Видят , что учебное руководство Python должно сказать на предмет классов и объектов класса .

@Steve Johnson уже ответил относительно статические методы , также зарегистрировал под , "Встроенные функции" в Справочном руководстве по библиотеке .

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...

Python @beidy рекомендуют classmethod с по staticmethod, поскольку метод тогда получает тип класса как первый аргумент, но я все еще немного нечеток на преимуществах этого подхода по staticmethod. Если Вы также, то это, вероятно, не имеет значения.

6
задан Colen 28 July 2009 в 21:15
поделиться

6 ответов

Возможно начиная с XP. Проверьте сообщение EM_SETCUEBANNER . Однако есть определенные проблемы , из-за которых он не работает так, как должен, в XP, поэтому лучше всего, если вы имеете дело с Vista.

Если он вам нужен для Win2k или более старых версий, вы Вам нужно будет сделать это самостоятельно, по крайней мере, на этих платформах.

7
ответ дан 9 December 2019 в 20:47
поделиться

Взгляните на EM_SETCUEBANNER

1
ответ дан 9 December 2019 в 20:47
поделиться

Возможно, но почему бы просто не установить текст и цвет по умолчанию по мере необходимости и не очистить их с помощью события «onClick»?

0
ответ дан 9 December 2019 в 20:47
поделиться

Спасибо за этот вопрос, я смогу использовать его в будущем. FWIW (вероятно, немного), вот реализация на Delphi:

procedure TForm1.FormShow(Sender: TObject);
const
  ECM_FIRST = $1500;
  EM_SETCUEBANNER = ECM_FIRST + 1;
begin
  SendMessage(edt.Handle,EM_SETCUEBANNER,0,LParam(PWideChar(WideString('Enter search here'))));
end;
3
ответ дан 9 December 2019 в 20:47
поделиться

Одна возможность: сделать его рисованным владельцем и вручную нарисовать на нем текст, если свойство .Text пусто.

1
ответ дан 9 December 2019 в 20:47
поделиться

Вам не нужно рисовать владельцем, он встроен в API пользователя (баннер) См. Winapi grp для примеров (на языке C)

0
ответ дан 9 December 2019 в 20:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: