Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Автоматический показ/скрытие ScrollBar в Memo? 
:(
    Опции темы
Medved
Дата 7.11.2004, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



У меня есть собственная реализация, но честно говоря, через ж.

Слежу за количеством видимых строчек, а затем по условию или показываю, или отображаю. Но когда я это делаю, курсор перемещается в начало. Я его переставляю, в конец. Чтобы это не происходило постоянно, успользую глобальную переменнную. А это мне уже не нравиться.

Может есть какой-нибудь более красивый способ?


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Pakshin A. S.
Дата 7.11.2004, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Можно попробовать вот это:
Код

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtDlgs, StdCtrls, ExtCtrls,Types;

type
 TForm1 = class(TForm)
   Memo1: TMemo;
   Label1: TLabel;
   procedure Memo1Change(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Memo1Change(Sender: TObject);
var
i:integer; // номер строки
Height:integer; // высота текста в Memo
Rect:TRect; // пользовательская область Memo
Pos:integer; // позиция курсора
begin
i:=0;
Height:=0;
Pos:=Memo1.SelStart;
Rect:=Memo1.ClientRect;
Label1.Font:=Memo1.Font;
while (i < Memo1.Lines.Count) and (Height < Rect.Bottom) do
 begin
  Label1.Caption:=Memo1.Lines[i];
  if Label1.Caption = ''
   then
    Label1.Caption:=' ';
  inc(Height, Label1.Height);
  inc(i)
 end;
if Height > Rect.Bottom
 then
  Memo1.ScrollBars:=ssVertical
 else
  Memo1.ScrollBars:=ssNone;
if Memo1.SelStart <> Pos
 then
  Memo1.SelStart:=Pos
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Visible:=False // прячем Label, нужный для работы...
end;

end.

PM   Вверх
Alex
Дата 7.11.2004, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Pegas Используй RichEdit у него есть специальное свойство HideSelection


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.