Форум: "Основная";
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];
ВнизВыборка из ListBox a Найти похожие ветки
← →
ezh (2002-02-18 14:15) [0]Здравствуйте!
У меня есть такой вопрос.
На форме есть TPageControl с двумя страничками, на первой есть TStringGrid. Нужно во второй столбик по PopUpMenu вызвать скрытый ListBox и выбрать из него какойнибудь элемент и поместить его во второй столбик и в строчку, по которой щёлкнули.
← →
MBo (2002-02-18 14:26) [1]пояснее бы
← →
ezh (2002-02-18 14:30) [2]Вот я привожу текст программы
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, Menus, ComCtrls, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Menu: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
EditMenu: TPopupMenu;
IzSpiska: TMenuItem;
PageControl1: TPageControl;
SpisRab: TTabSheet;
usgrd: TStringGrid;
PoGodam: TTabSheet;
SvodSpis: TStringGrid;
Spisok: TListBox;
procedure FormCreate(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure IzSpiskaClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i,a:integer;
TempSpisok:TListBox;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
USgrd.Cells[0,0]:="";
USgrd.Cells[1,0]:="";
USgrd.Cells[2,0]:="";
USgrd.Cells[3,0]:="";
USgrd.Cells[4,0]:="";
USgrd.Cells[5,0]:="";
USgrd.Cells[6,0]:="";
USgrd.Cells[7,0]:="";
USgrd.Cells[8,0]:="";
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Form2.Show;
Form1.Enabled:=False;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
{i:=Spisok.SelCount;
a:=usgrd.Row;
usgrd.Cells[2,2]:=Spisok.Items.Strings[i];}
end;
procedure TForm1.IzSpiskaClick(Sender: TObject);
begin
Spisok.Parent:=PageControl1.Pages[1];
Spisok.Top:=24+usgrd.DefaultRowHeight*usgrd.RowCount;
Spisok.Visible:=True;
Spisok.Enabled:=True;
Spisok.SetFocus;
end;
end.
← →
MBo (2002-02-18 15:12) [3]а надо именно по меню или просто SelectCell подойдет?
← →
ezh (2002-02-18 17:56) [4]Мне врочем надо, чтобы ЛистБокс высвечивался под нужной строкой, по нужному элементу тыкаешь два раза, и он добавляется в СтрингГрид.
← →
MBo (2002-02-19 06:37) [5]вот как можно с комбобоксом (IMHO в Grid он симпатичнее Listbox-а)
procedure TForm1.sg1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var
R: TRect;
begin
if ARow =1 then //второй ряд
begin
R := SG1.CellRect(ACol, ARow);
cb1.left := R.Left+ SG1.Left+1;
cb1.top := R.Top + sg1.top+1;
cb1.Width := sg1.ColWidths[acol];
cb1.Tag:=ACol+65536*ARow;//запоминаем ячейку, здесь можно только ACol
cb1.Visible := True;
cb1.SetFocus;
end;
CanSelect := True;
end;
procedure TForm1.cb1Change(Sender: TObject);
begin
SG1.Cells[cb1.Tag mod 65536,cb1.tag div 65536]:=
cb1.Items[cb1.itemindex];
cb1.visible:=false;
end;
procedure TForm1.cb1Exit(Sender: TObject);
begin
cb1.visible:=false;
end;
← →
Ezh (2002-02-19 11:58) [6]Very BIG Thanks! Большое спасибо, всё классно получилось, так и вправду симпатичнее!
← →
Ezh (2002-02-21 14:52) [7]У меня снова есть вопросец:
один столбик полностью не влазит в стирггрид(точнее 5), а на нем стоит выбор из комбобокса, когда выделяешь ячейку из этого столбика, он (столбик) передвигается (скроллируется стрингрид), а комбобокс остается на прежнем месте, тем самым получается очень приочень некрасиво.
Посоветуйте кто-нибудь что-нибудь, чтобы это исправить.
Если надо, то могу выслать исходники проги.
← →
MBo (2002-02-21 15:52) [8]изучи свойства, методы и события stringgrid
procedure TForm1.sg1TopLeftChanged(Sender: TObject);
var
R: TRect;
begin
R := SG1.CellRect(cb1.Tag mod 65536,cb1.tag div 65536);
cb1.left := R.Left+ SG1.Left+1;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c