Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Вниз

DBCtrlGrid без ScrollBar   Найти похожие ветки 

 
Silver... ©   (2005-10-25 17:48) [0]

Как сделать чтоб небыло видно ScrollBar у DBCtrlGrid


 
msguns ©   (2005-10-25 18:20) [1]

У него два скрола. Какой имеется в виду ?


 
msguns ©   (2005-10-25 18:20) [2]

Прошу прощения. Упустил Ctrl ;((


 
Silver... ©   (2005-10-25 19:00) [3]

Мне хватит даже направления куды рыть :)


 
Amoeba ©   (2005-10-26 10:43) [4]

А нафига это нужно?


 
Johnmen ©   (2005-10-26 11:09) [5]

Убрать можно, но это извращение.
А рыть надо в сторону отказа от DBCtrlGrid, как от бесполезного,  бессмысленного и просто "неудобного"...


 
Silver... ©   (2005-10-26 21:16) [6]


> А рыть надо в сторону отказа от DBCtrlGrid


Не впервые слышу НО

у меня ситуация такая:

 Надо товар видать ввиде кнопок (с инфой о таваре) кликнул...

Так как не хотелось мучится с плодением "обычных" кнопок (TPanel в моем случае для инфы о товаре), расчета размеров.
 Вобчем поставил DBCtrlGrid там TPanel с инфой о товаре, OnClick... и всё, причем хорошо даже опционируется легко изменяется кол. строк, столбцов... вобшем идеально подошел для решения задачи (за 10 мин)

 ... единственное не нравится когда красуется ScrollBar когда в нем нет нёбходимость (отсюда о вопрос:)
 всё осталиное работает на ура


 
sniknik ©   (2005-10-26 21:40) [7]

> ... единственное не нравится когда красуется ScrollBar когда в нем нет нёбходимость
ShowScrollBar(DBCtrlGrid1.Handle, SB_BOTH, false);


 
Johnmen ©   (2005-10-27 00:13) [8]

причём ShowScrollBar надо вызывать в OnPaintPanel


 
sniknik ©   (2005-10-27 00:38) [9]

> причём ShowScrollBar надо вызывать в OnPaintPanel
а может и не надо, это в гриде идет восстановление скролов по "каждому чиху", там на них много завязано, а тут может и не так. может разового снятия будет достаточно.


 
Johnmen ©   (2005-10-27 00:43) [10]

>sniknik ©   (27.10.05 00:38) [9]

Надо :)))
Т.к. скролл всегда перерисовывается при навигации...


 
Silver... ©   (2005-10-27 20:26) [11]


> может разового снятия будет достаточно.

оказалось что недостаточно :(

 Кажись от идеи убрать ScrollBar придется отказаться потому как даже если не видно ScrollBar-а его место по любому остается что тоже не красиво уж лучше пусть ScrollBar красуется чем пустое место :(

 Доп. вопрос (чтоб др. ветку не открывать)

Можно как-нибудь добраться до метода OnPaint самого DBCtrlGrid (КАК?). В смысле надо сделать некие настойки сразу до/после его прорисовки


 
sniknik ©   (2005-10-27 21:12) [12]

> уж лучше пусть ScrollBar красуется чем пустое место :(
а сделать пошире, с учетом что он исчезнет?

> Можно как-нибудь добраться до метода OnPaint самого DBCtrlGrid (КАК?)
... не трож генофонд! ;о))
но в принципе можно попробовать... скопируй к себе папку с программой и подключи в проект файл dbcgrids.pas, там сделай исправление  

procedure TDBCtrlGrid.WMPaint(var Message: TWMPaint);
begin
 //сюда посыл своего сообщения (SendMessage) это /до
 PaintHandler(Message);
 //сюда тоже самое /после
end;
тут надо еще хендл окна передать которому сообшения шлются, одно маленькое свойство добавить ;)

ну или пару процедур и пропертей добавить, будут полноценные методы  
тогда вместо сообшений
procedure TDBCtrlGrid.WMPaint(var Message: TWMPaint);
begin
 if Assigned(FOnBeforePaint) then FOnBeforePaint(Self);
 PaintHandler(Message);
 if Assigned(FOnAfterPaint) then FOnAfterPaint(Self);
end;
присваивать правда их придется в рантайм... и главное основных методов не трогать...
должно получится. я так делал. правда с ADODB, и тогда изза проблем (с таймаутами), а не изза собственной "блажи".... но ведь принцип тот же. ;) попробуй.


 
sniknik ©   (2005-10-27 22:01) [13]

вот
это изменения в dbcgrids.pas (скопированном и подключенном к твоему проекту!!!)

 ....
 TDBCtrlPaint = procedure(Sender: TObject) of object;

 TDBCtrlGrid = class(TWinControl)
 private
   FDataLink: TDBCtrlGridLink;
 ....
   FOnPaintPanel: TPaintPanelEvent;
   FOnBeforePaint: TDBCtrlPaint;
   function AcquireFocus: Boolean;
 ...  
   property OnStartDrag;
   property OnBeforePaint: TDBCtrlPaint read FOnBeforePaint write FOnBeforePaint;
 end;

 ...

procedure TDBCtrlGrid.WMPaint(var Message: TWMPaint);
begin
if Assigned(FOnBeforePaint) then FOnBeforePaint(Self);
 PaintHandler(Message);
end;


а это пример работы с "этим" ;)
модуль

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, DBCtrls, Mask, dbcgrids, DB, ADODB;

type
 TForm1 = class(TForm)
   ADOConnection1: TADOConnection;
   ADODataSet1: TADODataSet;
   DataSource1: TDataSource;
   DBCtrlGrid1: TDBCtrlGrid;
   DBEdit1: TDBEdit;
   DBText1: TDBText;
   Label1: TLabel;
   procedure FormCreate(Sender: TObject);
 private
   procedure BeforePaint(Sender: TObject);
 public
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BeforePaint(Sender: TObject);
begin
 Label1.Caption:= IntToStr(StrToIntdef(Label1.Caption, 0)+1)
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 DBCtrlGrid1.OnBeforePaint:= BeforePaint;
end;

end.

и форма в dfm
object Form1: TForm1
 Left = 233
 Top = 107
 Width = 236
 Height = 302
 Caption = "Form1"
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "MS Sans Serif"
 Font.Style = []
 OldCreateOrder = False
 OnCreate = FormCreate
 PixelsPerInch = 96
 TextHeight = 13
 object Label1: TLabel
   Left = 16
   Top = 16
   Width = 32
   Height = 13
   Caption = "Label1"
 end
 object DBCtrlGrid1: TDBCtrlGrid
   Left = 5
   Top = 48
   Width = 216
   Height = 216
   DataSource = DataSource1
   TabOrder = 0
   object DBText1: TDBText
     Left = 16
     Top = 8
     Width = 65
     Height = 17
     DataField = "ID"
     DataSource = DataSource1
   end
   object DBEdit1: TDBEdit
     Left = 16
     Top = 32
     Width = 169
     Height = 21
     DataField = "GoodName"
     DataSource = DataSource1
     TabOrder = 0
   end
 end
 object ADOConnection1: TADOConnection
   Connected = True
   ConnectionString =
     "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security In" +
     "fo=False;User ID=sa;Initial Catalog=Base2;Use Procedure for Prep" +
     "are=1;Auto Translate=True;Packet Size=4096;Workstation ID=NIKS;U" +
     "se Encryption for Data=False;Tag with column collation when poss" +
     "ible=False"
   LoginPrompt = False
   Provider = "SQLOLEDB.1"
   Left = 16
   Top = 144
 end
 object ADODataSet1: TADODataSet
   Active = True
   Connection = ADOConnection1
   CursorType = ctStatic
   CommandText = "select * from Googs"
   Parameters = <>
   Left = 56
   Top = 144
 end
 object DataSource1: TDataSource
   DataSet = ADODataSet1
   Left = 96
   Top = 144
 end
end


работает ;) естественно тебе придется подключить свою базу и таблицу.


 
Silver... ©   (2005-10-28 20:14) [14]


> ... не трож генофонд! ;о))


Ти знаеш я какраз и не любитель его трогать разве когда припрет :)
это, скажем так, на половину тот случай потому как убрать ScrollBar это лично мое желание, а не требование заказчика. Я надеелся сделать малой кровью, не трогая генофонд :), типа у себя чего-то ловлю... отменяю...

 Большое спасибо за пример.

Воспользуюсь им пока не нашел другого "интерфейсного" решения



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.013 c
2-1132415297
Aleks
2005-11-19 18:48
2005.12.18
Какой компонент использовать


1-1132842444
френк
2005-11-24 17:27
2005.12.18
Мерцание компонента


14-1132734051
rea
2005-11-23 11:20
2005.12.18
Семинар D2006


2-1133439693
linox
2005-12-01 15:21
2005.12.18
Еще один вопрос. Что за тип - Range;


14-1132970523
Юрий Зотов
2005-11-26 05:02
2005.12.18
Просматривая...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский