Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Текст в два (три) ряда на button

16K
19 октября 2006 года
Maklim
9 / / 28.06.2006
Как подписать кнопку #button# текстом в два - три ряда? используя свойство #Caption# или
надо использовать другой объект?
16K
19 октября 2006 года
demon74
20 / / 18.10.2006
попробуй BitButton....вставишь на него рисунок со своим текстом....по-моему это самый простой выход
16K
19 октября 2006 года
Maklim
9 / / 28.06.2006
Это понятно, хотелось бы решить проблему на уровне текста.
Может в коде можно как-то связать тесты типа

Button1->Caption=" aaa " ;
Button1->Caption=" // bbb ";

Аброкадабра конечно ...
92
20 октября 2006 года
Тень Пса
2.2K / / 19.10.2006
пиши свой компонент =) будет даже проще, и не надо лишних картинок, которые потом жрут память )))))))) и собссна увеличивают размер исполняшки
8.7K
22 октября 2006 года
Yellow Raven
15 / / 04.04.2005
[QUOTE=Maklim]Как подписать кнопку #button# текстом в два - три ряда? используя свойство #Caption# или
надо использовать другой объект?[/QUOTE]
Могу дать только идею. В своё время в StringGrid'e надо было выводить текст в n строк. Я тогда воспользовался свойством Canvas и выводил текст прямо на канву. Конечно, нужно по пикселям расчитывать положение, но это не сложно... Другое дело, что у батонов нет канваса... Либо надо лезть в их исходник, либо может другой компанент в виде кнопки использовать, панель к примеру... ;)
92
22 октября 2006 года
Тень Пса
2.2K / / 19.10.2006
тут с тобой согласен, но... тогда нужно опять же переписывать или дописывать события OnMouseDown и OnMouseUp.... хотя....

у панели есть такая фишка......

в общем можно так:

Код:
void __fastcall TForm1::Panel1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
 Panel1->BevelInner = bvLowered;
 Panel1->BevelOuter = bvLowered;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Panel1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
 Panel1->BevelInner = bvRaised;
 Panel1->BevelOuter = bvNone;
}


но у панели тоже нету Canvas, так что заюзай либо уже поправленный класс Батона или панельку поправь :D
16K
22 октября 2006 года
demon74
20 / / 18.10.2006
вот смотри чего нашёл...попробуй..может разберёшься))
Цитата:


Наpисовать кнопкy.

//--------------------------------------------------------------------------
//
// (c) Igor Azarny 2001
// [email]azarny@hotmail.com[/email] [email]azarny@rambler.ru[/email]
//
//--------------------------------------------------------------------------

#ifndef CircleButtonH
#define CircleButtonH
//--------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
//--------------------------------------------------------------------------
class PACKAGE TCircleButton : public TSpeedButton
{
private:
TColor FColor;
virtual void __fastcall DrawRaised(int Normal=1,int Single=0);
virtual void __fastcall DrawSmooth(int Normal=1);
virtual void __fastcall DrawButtonText(void);
void __fastcall SetColor(TColor value);
TColor __fastcall GetColor();
protected:
virtual void __fastcall Paint();
public:
__fastcall TCircleButton(TComponent* Owner);
__published:
__property TColor Color = { read=GetColor, write=SetColor,
default=clBtnFace };
};
//--------------------------------------------------------------------------
#endif


//--------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "CircleButton.h"
#pragma package(smart_init)
//--------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//

static inline void ValidCtrCheck(TCircleButton *)
{
new TCircleButton(NULL);
}
//--------------------------------------------------------------------------
__fastcall TCircleButton::TCircleButton(TComponent* Owner)
: TSpeedButton(Owner)
{
FColor = clBtnFace;
Transparent = false;
}
//--------------------------------------------------------------------------
void __fastcall TCircleButton::DrawSmooth(int Normal) {
if (!Normal) DrawRaised (Normal);
else DrawRaised (Normal,1);
}
//--------------------------------------------------------------------------
void __fastcall TCircleButton::DrawRaised(int Normal,int Single) {
if (!Transparent) {
Canvas->Pen->Color = FColor;
Canvas->Brush->Color = FColor;
Canvas->Ellipse(1, 1, Width-1, Height-1);
}

if (Normal) Canvas->Pen->Color = clBtnShadow;
else Canvas->Pen->Color = clBtnHighlight;

Canvas->Pen->Width=(Single==1?1:2);
Canvas->Arc(0, 0, Width, Height, 0, Height, Width, 0);

if (Normal) Canvas->Pen->Color = clBtnHighlight;
else Canvas->Pen->Color = clBtnShadow;

Canvas->Pen->Width= (Single==1?1:2);
Canvas->Arc(0, 0, Width, Height, Width, 0 ,0, Height);
}
//--------------------------------------------------------------------------
void __fastcall TCircleButton::DrawButtonText(void) {
TRect TextBounds(0, 0, Width, Height);
Canvas->Brush->Style = bsClear;
if (Enabled) {
if (FState==bsDown)
OffsetRect(&TextBounds, 1, 1);
DrawText(Canvas->Handle, Caption.c_str(), Caption.Length(),
&TextBounds,
DT_SINGLELINE + DT_CENTER + DT_VCENTER /*| BiDiMode*/);
} else {
OffsetRect(&TextBounds, 1, 1);
Canvas->Font->Color = clBtnHighlight;
DrawText(Canvas->Handle, Caption.c_str(), Caption.Length(),
&TextBounds,
DT_SINGLELINE + DT_CENTER + DT_VCENTER /*| BiDiMode*/);
OffsetRect(&TextBounds, -1, -1);
Canvas->Font->Color = clBtnShadow;
DrawText(Canvas->Handle, Caption.c_str(), Caption.Length(),
&TextBounds,
DT_SINGLELINE + DT_CENTER + DT_VCENTER /*| BiDiMode*/);
}
}
//--------------------------------------------------------------------------
void __fastcall TCircleButton::Paint() {
Canvas->Font = this->Font;
Canvas->Brush->Color = Color;
if (Enabled) {
if (Flat) {
if (MouseInControl) {
DrawRaised(FState==bsDown?0:1);
} else {
DrawSmooth(FState==bsDown?0:1);
}
} else { // not flat
DrawRaised(FState==bsDown?0:1);
}
} else { // disabled TColor
DrawRaised(1,1);
}
DrawButtonText();

}
//--------------------------------------------------------------------------
void __fastcall TCircleButton::SetColor(TColor value)
{
if(FColor != value) {
FColor = value;
}
Invalidate();
}
//--------------------------------------------------------------------------
TColor __fastcall TCircleButton::GetColor()
{
return FColor;
}
//--------------------------------------------------------------------------
namespace Circlebutton
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TCircleButton)};
RegisterComponents("JT", classes, 0);
}
}

246
22 октября 2006 года
GIZMO
1.8K / / 30.07.2004
[QUOTE=Тень Пса] так что заюзай либо уже поправленный класс Батона или панельку поправь :D[/QUOTE]
прежде, чем что-то править надо подумать надо-ли? Может просто стиль другой поставить?
 
Код:
DWORD dwStyle = GetWindowLong(Button1->Handle, GWL_STYLE);
    dwStyle = dwStyle|BS_MULTILINE;
    SetWindowLong(Button1->Handle, GWL_STYLE, dwStyle);
    Button1->Caption = "один\nдва\nтри";
92
23 октября 2006 года
Тень Пса
2.2K / / 19.10.2006
точно... хм... недопёр сразу =)
16K
30 октября 2006 года
Maklim
9 / / 28.06.2006
[QUOTE=GIZMO]прежде, чем что-то править надо подумать надо-ли? Может просто стиль другой поставить?
 
Код:
DWORD dwStyle = GetWindowLong(Button1->Handle, GWL_STYLE);
    dwStyle = dwStyle|BS_MULTILINE;
    SetWindowLong(Button1->Handle, GWL_STYLE, dwStyle);
    Button1->Caption = "один\nдва\nтри";
[/QUOTE]


[QUOTE=Maklim]
Ой, спасибо ... все сработало.
16K
30 октября 2006 года
Maklim
9 / / 28.06.2006
Ой, спасибо ... все сработало.
(еще раз )
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог