52610.fb2
// начало кода
procedure ShowHeadStyle(n: integer);
var
LStyle: TmyStyle;
begin
LStyle:= ScanUpStyle(n); // получаем тип заголовка к которому относится эта строка
Form1.Button2.Caption:= SetStyle(LStyle); // меняем название кнопки
Form1.Button2.Tag:= integer(LStyle); // запоминаем этот стиль, чтобы потом меньше возиться.
end;
// конец кода
Теперь посмотрим, как мы получаем информацию о стиле.
Элементарно, Ватсон!
// начало кода
function ScanUpStyle(n: integer):TmyStyle;
var
i: integer;
LStyle: TmyStyle;
begin
with Form1.ListBox1 do
for i:= n downto 0 do
begin // просматриваем список от заданной строки вверх
GetStyle(Items[i], LStyle); // получаем стиль строки
if LStyle in [H1..H5] then
begin // если стиль строки заголовочный
result:= LStyle; // записываем его в результат
exit; // и выходим, нечего больше время терять!
end;
end; // если дошли до начала списка, а заголовков не найдено…
result:= H1; // присваиваем тип заголовка H1
end;
// конец кода
Выбираем строку в тексте
И если указанный на кнопке стиль подходит, нажимаем ее.
При этом вызывается процедура ChangeStyle(TmyStyle(Button2.Tag));
Параметром ее будет ранее сохраненные сведения о текущем стиле заголовка.
Процедура ChangeStyle описана ранее.
Теперь кнопки [+] и [-]
Код процедур аналогичен, разница только в одной строчке
// начало кода
procedure TForm1.Button5Click(Sender: TObject);
var // кнопка плюс
LStyle: TmyStyle;
begin
LStyle:= TmyStyle(Button2.Tag); // получаем текущий стиль
if LStyle < H5 then ChangeStyle(Succ(LStyle)); // если он не слишком велик, прибавляем единицу
// а для кнопки минус, вот эта строчка. Вычитается единичка, если есть откуда вычитать
// if LStyle > H1 then ChangeStyle(Pred(LStyle));
end;
// конец кода