Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.03.2014, 13:54
delpi12 delpi12 вне форума
Новичок
 
Регистрация: 14.03.2014
Сообщения: 82
Версия Delphi: Delphi XE2
Репутация: -623
По умолчанию как сделать что бы в Edit был прозрачный текст который при введение в Edit все исчез

как сделать что бы в Edit был прозрачный текст который при введение в Edit все исчезла , как на сайтах (введите логин , парол ) ?
  #2  
Старый 15.03.2014, 14:08
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Код:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
with (Sender as TEdit) do
if Font.Color = clSilver then
begin
Font.Color:= clBlack;
Text:= '';
end;
end;

// Для проверки
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Font.Color:= clSilver;
Edit1.Text:='введите логин , парол';
end;
  #3  
Старый 16.03.2014, 09:57
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    XPManifest1: TXPManifest;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

const
  EM_SETCUEBANNER = $1501;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  Banner: String;
  buf: array [0..$ff] of Char;
begin
  Banner:=UTF8Encode('Введите логин');
  Utf8ToUnicode(PWideChar(@buf), PAnsiChar(Banner), Length(Banner));
  SendMessage(Edit1.Handle, EM_SETCUEBANNER, 0, Integer(@buf));
end;

end.
__________________
Пишу программы за еду.
__________________
Эти 2 пользователя(ей) сказали Спасибо NumLock за это полезное сообщение:
PhoeniX (16.03.2014), poli-smen (16.03.2014)
  #4  
Старый 16.03.2014, 10:20
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Увы, но с посылом сообщения только с ХПхи будет работать (и походу только при наличии манифеста)
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
  #5  
Старый 16.03.2014, 16:10
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от NumLock
Код:
.....
  SendMessage(Edit1.Handle, EM_SETCUEBANNER, 0, Integer(@buf));
.....
Прикольно. Не знал что такая возможность появилась в XP. Плохо конечно что обязательно требуется наличие манифеста.
Единственно я не понял зачем нужны лишние преобразования. Вот так попроще будет:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  Banner: WideString;
begin
  Banner := 'Введите логин';
  SendMessage(Edit1.Handle, EM_SETCUEBANNER, 0, Integer(Banner));
end;

или даже так:
Код:
procedure TForm1.FormCreate(Sender: TObject);
const
  Banner: WideString = 'Введите логин';
begin
  SendMessage(Edit1.Handle, EM_SETCUEBANNER, 0, Integer(Banner));
end;
  #6  
Старый 18.03.2014, 20:54
delpi12 delpi12 вне форума
Новичок
 
Регистрация: 14.03.2014
Сообщения: 82
Версия Delphi: Delphi XE2
Репутация: -623
По умолчанию

Цитата:
Сообщение от poli-smen
Прикольно. Не знал что такая возможность появилась в XP. Плохо конечно что обязательно требуется наличие манифеста.
Единственно я не понял зачем нужны лишние преобразования. Вот так попроще будет:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  Banner: WideString;
begin
  Banner := 'Введите логин';
  SendMessage(Edit1.Handle, EM_SETCUEBANNER, 0, Integer(Banner));
end;

или даже так:
Код:
procedure TForm1.FormCreate(Sender: TObject);
const
  Banner: WideString = 'Введите логин';
begin
  SendMessage(Edit1.Handle, EM_SETCUEBANNER, 0, Integer(Banner));
end;


не работает так
  #7  
Старый 19.03.2014, 16:02
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от delpi12
не работает так
Всё прекрасно работает (при наличии манифеста). Проверил на Delphi 7 и Delphi XE2.

Delphi 7:


Delphi XE2:
  #8  
Старый 19.03.2014, 17:57
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от poli-smen
зачем нужны лишние преобразования
издержки выдирания из рабочего кода)))

дополнение
первый параметр сообщения EM_SETCUEBANNER может быть false (0) или true (>0). при true подсказка показывается даже когда edit имеет фокус ввода.
__________________
Пишу программы за еду.
__________________
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter