Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2008, 23:04   #1
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию избавится от ScrollBar...

Нашел код, как избавиться от ScrollBar в DBGrid.
Но ScrollBar не исчезает, а постоянно мигает. Как вообще удалить ScrollBar? Вот код, который делает "почти" то что мне нужно...
Код:
type
  TNoScrollBarDBGrid = class(TDBGrid)
  protected
    procedure Paint; override;
end;

procedure register;

implementation

procedure register;
begin
  RegisterComponents('Samples', [TNoScrollBarDBGrid]);
end;

{ TNoScrollBarDBGrid }

procedure TNoScrollBarDBGrid.Paint;
begin
  SetScrollRange(Handle, SB_VERT, 0, 0, false);
  inherited;
end;
Справка в 2007 делфи чет не помогла... кучу функций scrollbar 'a перепробовал - и ничего...
Изо всей благодати
В руках крепко сжатых
Я донесу только капли

Последний раз редактировалось Roof; 25.09.2008 в 23:13.
Roof вне форума Ответить с цитированием
Старый 25.09.2008, 23:42   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Если я не ошибаюсь, то от ScrollBar можно избавиться так:

Код:
Type
TGrid=Class(TCustomGrid)
End;
...
Begin
TGrid(DBGrid1).ScrollBars:=SsNone;
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 26.09.2008, 00:20   #3
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

2 Terran - неа не прокатывает, при заполнении DBGrid все равно вертикальный Scroll появляется...
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 26.09.2008, 20:18   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Из содержимого моего справочника (свободно лежит на сайте нашего клуба):
Код:
Нужные нам свойства существуют, но вынесены в секцию Protected предка DBGrid: TCustomGrid. 
Наиболее правильным способом было бы создание класса наследника от TDBGrid с выводом ScrollBars в 
секцию Public, но можно обойтись и без этого следующим способом: 

Type TFake=class(TCustomGrid); 

implementation 

{$R *.dfm} 

procedure TForm1.Button1Click(Sender: TObject); 
begin 	
TFake(DBGrid1).ScrollBars:=ssNone;  
end;
Если лично у вас что-то не получается, это не значит, что ОНО не работает. Когда наберетесь мало-мальского опыта, тогда и все примеры из книг "вдруг" начнут работать, и вопросов меньше будет возникать. А если и будут, то нормально сформулированные. "Нахаляву" программировать не научишься. Само программирование - это творчество, а вот процесс обучения - тяжкий труд. И не берите за образец подражания мартышку с очками из известной басни. Если не хотите работать (в данном случае САМОСТОЯТЕЛЬНО читать литературу), то лучше сразу бросьте это дело и валяйте играть в Doom или Warcraft, что там у вас сейчас в моде...
mihali4 вне форума Ответить с цитированием
Старый 26.09.2008, 21:09   #5
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

2 mihali4 при всем к вам уважении меня ваши советы по поводу того как учиться программитровать нисколько не интересуют. И кстати в игры я не играю. Не в обиду говорю.
Насчет свойств в protected - это да, возможно именно то, что нужно.
А приведенный способ не работает. Не верите? Проверьте в моем примере.
Конечно, я оставляю шанс на то, что я глубоко ошибаюсь...
Вложения
Тип файла: rar DBGrid_ADO1.rar (13.5 Кб, 13 просмотров)
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 26.09.2008, 22:49   #6
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Roof Посмотреть сообщение
Нашел код, как избавиться от ScrollBar в DBGrid.
Но ScrollBar не исчезает, а постоянно мигает. Как вообще удалить ScrollBar? ...
Раз уж Вы создаете свой контрол, перекройте UpdateScrollBar;

Код:
type
   TMyGrid = class(TDBGrid)
   protected
      procedure UpdateScrollBar; override;
   public
      constructor Create(Owner:TComponent); override;
   end;

constructor TMyGrid.Create(Owner:TComponent);
begin
   inherited Create(Owner);
   ScrollBars := ssNone;
end;

procedure TMyGrid.UpdateScrollBar;
begin
    // ничего не делаем и не вызываем метода предка
end;
Это метод перекрыт в TDBGrid и вызывает SetScrollInfo() независимо от свойства ScrollBars. Поэтому простое TMyGrid(DBGrid1).ScrollBars := ssNone; не работает. (по крайней мере в 10-ке. может в других версиях было по другому).
alexBlack вне форума Ответить с цитированием
Старый 26.09.2008, 23:49   #7
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

2 alexBlack - создаю свой контрол по твоему коду, но вот ssNone; никак не компилируется...
[DCC Error] MyDBGrid1.pas(30): E2003 Undeclared identifier: 'ssNone' - пишет...
может uses какой еще подцепить?
2007 делфи...
Изо всей благодати
В руках крепко сжатых
Я донесу только капли

Последний раз редактировалось Roof; 26.09.2008 в 23:57.
Roof вне форума Ответить с цитированием
Старый 27.09.2008, 00:18   #8
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Roof Посмотреть сообщение
2 alexBlack - создаю свой контрол по твоему коду, но вот ssNone; никак не компилируется...
[DCC Error] MyDBGrid1.pas(30): E2003 Undeclared identifier: 'ssNone' - пишет...
может uses какой еще подцепить?
2007 делфи...
TScrollStyle = (ssNone, ssHorizontal, ssVertical, ssBoth);
в StdCtrls;
alexBlack вне форума Ответить с цитированием
Старый 27.09.2008, 22:34   #9
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

2 alexBlack - да, точно он самый. Огромное спасибо за замечательное решение проблемы.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 28.03.2011, 09:59   #10
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Здравствуйте. А что делать, если на строчку
Код:
procedure UpdateScrollBar; override;
выходит ошибка
Цитата:
Method 'UpdateScrollBar' not found in base class
?


Так нет ошибки
Код:
  protected
    {$IFDEF COMPILER9_UP}
    procedure UpdateScrollBar; override;
    {$ENDIF COMPILER9_UP}
...
implementation
{$IFDEF COMPILER9_UP}
procedure TMyGrid.UpdateScrollBar;
begin
    // ничего не делаем и не вызываем метода предка
end;
{$ENDIF COMPILER9_UP}

Последний раз редактировалось Сергей089; 28.03.2011 в 11:34.
Сергей089 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ScrollBar. Цвет... Roof Win Api 0 29.08.2008 23:45
ListBox и Scrollbar Airou Общие вопросы Delphi 3 22.05.2008 17:09
Как избавится от нежелатьльного эффета текста Иллидан Общие вопросы Delphi 5 20.01.2008 21:45