|
|
Как поместить графику в
TListBox
Определение момента
прихода и ухода мыши с компонента
Убрать звук при нажатии
Enter в TEdit
xRow := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, Memo1.SelStart, 0); xChr := SendMessage(Memo1.Handle, EM_LINEINDEX, Zeile, 0); xCol := Memo1.SelStart - ChrVor + 1;
Для этого надо послать сообщение EM_SetTabStops компоненте TMemo, в котором необходимо указать два параметра. Количество передаваемых значений и величины табуляций. Если первый параметр равняется нулю, то второй параметр игнорируется и величина табуляции сбрасывается в значение по умолчанию (32). Иначе, устанавливается величина указанная во втором параметре, причем, при единичном значении все величины табуляций будут равны, а при большем значении величины берутся из переданного массива.
{Установка одной величины табуляции}
const TabInc: longint = 40;
begin
SendMessage(Memo1.Handle, EM_SetTabStops, 1, Longint(@TabInc));
end;
{Установка двух величин табуляции}
const TabInc: array [1..2] of longint = (10, 30);
begin
SendMessage(Memo1.Handle, EM_SetTabStops, 2, Longint(@TabInc));
end;
// Необходимо установить стиль ListBox'а в lbOwnerDrawFixed или
// lbOwnerDrawVariable. В первом случае высота строк будет фиксированной.
var
Form1: TForm1;
Bit:TBitmap;
implementation
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var cc: TCanvas;
begin
cc:=(Control as TListBox).Canvas cc.FillRect(rect);
cc.Draw(Rect.Left+100,Rect.Top,Bit);
cc.TextOut(Rect.Left,Rect.Top,'safsdf');
end;
procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
var Height: Integer);
begin
if index=1 then Height:=24 else Height:=16;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Bit:=TBitmap.Create;
Bit.LoadFromFile('c:\image\image1.bmp');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Bit.Destroy;
end;
//Для этого нужно создать потомок от нужного компонента.
type
TBoard=class(TPanel)
public
procedure CMMouseEnter (var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave (var Message: TMessage); message CM_MOUSELEAVE;
end;
var
Form1: TForm1;
Board: TBoard;
implementation
{$R *.DFM}procedure TBoard.CMMouseEnter(var Message: TMessage); begin Form1.Label1.Caption:='Мышь на панели'; end; procedure TBoard.CMMouseLEAVE (var Message: TMessage); begin Form1.Label1.Caption:='Мышь вне панели'; end;
procedure TForm1.FormCreate(Sender: TObject); begin Board:=TBoard.Create(self); Board.Parent:=Form1; Board.Visible:=True; Board.Left:=100; Board.Top:=100; end; procedure TForm1.FormDestroy(Sender: TObject); begin Board.Destroy; end;
procedure TForm1.Button1Click(Sender: TObject); var line: integer; begin line := 16; Memo1.SelStart := Memo1.Perform(EM_LINEINDEX, line, 0); Memo1.Perform(EM_SCROLLCARET, 0, 0); end;
uses ShellApi, Windows; SystemParametersInfo(SPI_SETBEEP,0,nil,0); //выключить SysTemparametersInfo(SPI_SETBEEP,1,nil,0); //включить