Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Вниз

Добавить свойство Caption.   Найти похожие ветки 

 
iBitmap ©   (2004-08-25 14:37) [0]

Доброе время суток!
Как компоненту добавить свойство Caption, если компонент основан на TImage (т.е. его родитель TImage). Нужно чтобы Caption писалось поверх изображения (как у Button). Напишите пожалуйста отрывок кода.


 
KapitAl   (2004-08-25 15:52) [1]

Возможно подойдет эта процедура. Перекрывай Paint и после вызова inherited попробуй вызвать drawcaption (само свойство объявить наверное не проблема). За работоспособность не ручаюсь :( , т.к. сам не проверял.
 Процедурка эта использовалась для реализации кнопки(унаследованной от TGraphicControl) с рисунком .

procedure drawcaption(fontcolor:TColor);
var RCap:Trect;
begin
 if not FWordwrap
  then
   Rcap:=rect(FMarginHorizontal,0,width-MarginHorizontal,height)
  else
   RCap:=rect(FMarginHorizontal,FMarginvertical,
            width-FMarginHorizontal,height-FMarginVertical);
 
 canvas.brush.style:=bsclear;
 canvas.font.color:=Fontcolor;
 if not Fwordwrap
  then begin
        Rcap:=rect(FMarginHorizontal,0,
                   width-MarginHorizontal,height);
        case Falignment of
   taCenter:
     DrawText(canvas.handle,@Caption[1],-1,Rcap, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
   taLeftJustify:
     DrawText(canvas.handle,@Caption[1],-1,Rcap, DT_SINGLELINE or DT_VCENTER or DT_LEFT);
   taRightJustify:
     DrawText(canvas.handle,@Caption[1],-1,Rcap, DT_SINGLELINE or DT_VCENTER or DT_RIGHT);
        end;{of Case}
       end
  else begin  // wordwrap
        RCap:=rect(FMarginHorizontal,FMarginvertical,
            width-FMarginHorizontal,height-FMarginVertical);
        case Falignment of
   taCenter:
     DrawText(canvas.handle,@Caption[1],-1,Rcap, DT_VCENTER or DT_CENTER or DT_WORDBREAK);
   taLeftJustify:
     DrawText(canvas.handle,@Caption[1],-1,Rcap, DT_VCENTER or DT_LEFT or DT_WORDBREAK);
   taRightJustify:
     DrawText(canvas.handle,@Caption[1],-1,Rcap, DT_VCENTER or DT_RIGHT or DT_WORDBREAK);
        end {of Case}
       end;
 end;


 
KapitAl   (2004-08-25 15:55) [2]

Чуток опечатался. Первый if в процедуре лишний.


 
iBitmap ©   (2004-08-25 17:21) [3]

Спасибо. Только он не знает Wordwrap и ошибки выдает.


 
iBitmap ©   (2004-08-25 17:29) [4]

Я пробовал сделать Caption при помощи TextOut. Т.е. Canvas.TextOut({здесь нужно расчитать положение по X... (Не знаю точно, как сделать, чтобы всегда текст был по середине, как например в Button"е.}, {Здесь по Y}, Caption);
Все хорошо, текст появляется (почти по середине), но  текст находится на белом фоне, т.е. текст появляется без Transparent. Как расчитать точно X и Y, чтобы разместитьтекст по середине и как тексту сделать Transparent background?


 
KapitAl   (2004-08-26 10:51) [5]

Вот процедура для вывода текста по центру и с прозрачным фоном.
Для проверки кинь на форму Image и BitBtn. В обработчике OnClick у BitBtn размести эту процедуру. Скорее всего можно и покомпактнее написать. Я хотел показать сам принцип.

procedure TForm1.BitBtn1Click(Sender: TObject);
var
x,y:integer;
x1,y1:integer;
Str:string;
begin
str:="My text";
x:=Image1.Width;
y:=Image1.Height;
With Image1.Canvas do
 begin
  x1:=TextWidth(Str);
  y1:=TextHeight(Str);
  Brush.Style:=bsClear;//прозрачный фон для текста
  x:=(x-x1) div 2;
  y:=(y+y1) div 2;
  TextOut(x,y,Str);
 end;
end;


 
KapitAl   (2004-08-26 11:02) [6]

По поводу WordWrap:
.....
published
property WordWrap:boolean read FWordWrap write SetWordWrap;
   {Specifies whether the button text wraps when it is too long for the width of the button.}

implementation
procedure TMyButton.SetWordWrap(const Value: boolean);
begin
 if value<>FWordWrap then
 begin
   FWordWrap := Value;
   invalidate;
 end;
end;


 
iBitmap ©   (2004-08-26 11:19) [7]

Спасибо. Я только немного поправил код, потому что текст выводился не посередине.


 
KapitAl   (2004-08-26 11:25) [8]

You are welcome :)



Страницы: 1 вся ветка

Форум: "Компоненты";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.037 c
4-1119449194
Семен Сорокин
2005-06-22 18:06
2005.08.21
Расположение заблокированного файла на диске.


3-1121029168
fedor
2005-07-11 00:59
2005.08.21
не могу соединить таблицы запросом


1-1122618209
td
2005-07-29 10:23
2005.08.21
кодировка в Database Desktop


1-1122497703
SpyBoy
2005-07-28 00:55
2005.08.21
Качественный текст


14-1121535734
Piter
2005-07-16 21:42
2005.08.21
Метро





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский