procedure TForm1.Panel2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Resizing:= false;
end;
procedure TForm1.Panel2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if Resizing then begin
TreeView1.Width:=TreeView1.Width+X;
// Предохранение от странных ошибок перерисовки при изменении размеров:
Panel1.Invalidate;
end;
end;
Код может быть модифицирован для получения горизонтального движка – идея, надеюсь, понятна…
StatusBar
Обработчик события OwnerDraw в компоненте StatusBar
Обработчик должен выглядеть примерно так:
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);
begin
with statusbar1.Canvas do begin
Brush.Color:= clRed;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, 'Панель '+IntToStr(Panel.Index));
end;
end;
StringGrid
Установка атрибутов –=Только для чтения=– у столбцов компонента StringGrid
Манипулирование вышеуказанным атрибутом возможно в обработчике события OnSelectCell:
if Col mod 2 = 0 then grd.Options:= grd.Options + [goEditing]
else grd.Options:= grd.Options – [goEditing];
Помещение изображения в ячейку StringGrid
Возможно ли поместить изображение в одну из ячеек компонента StringGrid?
Такое позволяет обработчик события OnDrawCell. Приводим скелет кода, демонстрирующий принцип вывода изображения в ячейке компонента:
with StringGrid1.Canvas do begin
{…}
Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic);
{…}
end;
Достичь цели позволяют методы Draw() и StretchDraw() объекта TCanvas. В приведенном примере переменная Image1 класса TImage содержит заранее загруженное изображение.
Сохранение и чтение Tstringgrid
Как мне сохранить целый Stringgrid со всеми ячейками в файле?
Procedure SaveGrid;
var f:textfile;
x,y: integer;
begin
assignfile(f,'Filename');
rewrite(f);
writeln(f,stringgrid.colcount);
writeln(f,stringgrid.rowcount);
For x:= 0 to stringgrid.colcount-1 do For y:= 0 to stringgrid.rowcount-1 do writeln(F, stringgrid.cells[x,y]);
closefile(f);
end;
Procedure LoadGrid;
var f:textfile;
temp,x,y:integer;
tempstr:string;
begin
assignfile(f,'Filename');
reset(f);
readln(f,temp);
stringgrid.colcount:= temp;
readln(f,temp);
stringgrid.rowcount:= temp;
For x:=0 to stringgrid.colcount-1 do For y:=0 to stringgrid.rowcount-1 do begin
readln(F, tempstr);
stringgrid.cells[x,y]:= tempstr;
end;
closefile(f);
end;
TabbedNotebook
Добавление элементов управления в TTabbedNotebook и TNotebook
Я несколько раз видел в конференциях вопросы типа "как мне добавить элементы управления в TTabbedNotebook или TNotebook во время выполнения программы?". Теперь, когда у меня выдалось несколько свободных минут, я попытаюсь осветить этот вопрос как можно подробнее:
Добавление элементов управления в TTabbedNotebook во время проектирования – красивая и простая задача. Все, что Вам нужно – это установить свойство PageIndex или ActivePage на необходимую страницу и начать заполнять ее элементами управления.