En Fri, 05 Jun 2015 05:55:51 -0500, Koenraad Lelong <[email protected]> escribió:

Op 03-06-15 om 01:19 schreef Jesus Reyes A.:

In the grid such combobox is called a picklist.

1. Select the grid
2. In the Object Inspector select the columns property and click the
"..." button.
3. Add some custom columns
4. Select the column where you wish to add a pick list
5. In the Object Inspector change the ButtonStyle to cbsPickList
6. In the Object Inspector select the PickList property and click the
"..." button.
7. Add all options you want to this list.
8. make sure the grid is editable.

Thanks, just tried this, but it's not what I need.

Like I said, I want to import a csv-file. Then, using the first row, I use a picklist of fieldnames to identify which column of the csv needs to go to which field in the database.
Maybe this clarifies it better :
-------------------------------------------------------
| Field2 | Field1 | | Field3 | | | <--- picklist (Field1, Field2, Field3, blank)
-------------------------------------------------------
|Col0Row1|Col1Row1|Col2Row1|Col3Row1|Col4Row1|Col5Row1|
|Col0Row2|Col1Row2|Col2Row2|Col3Row2|Col4Row2|Col5Row2|
etc.

This means column0 should got to Field2 of the database, column1 should got to Field1 of the database and column3 should got to Field3 of the database. The rest of the columns are not needed in the database.

Koenraad.


So you want the picklist only in the first row. Then use something like:

// use grid's OnSelectEditor
procedure TForm1.StringGrid1SelectEditor(Sender: TObject; aCol, aRow: Integer;
  var Editor: TWinControl);
begin
  if aRow=StringGrid1.fixedRows then begin
    Editor := StringGrid1.EditorByStyle(cbsPickList);
    // fill the picklist with field list
TPickListCellEditor(Editor).Items.CommaText := 'Field1,Field2,Field3,etc';
    // or TPickListCellEditor(Editor).Items.Assign(FieldList)
    // or etc
  end else
    Editor := nil; // readonly the rest of rows (or select another editor)
end;

// use grid's OnPickListSelect
procedure TForm1.StringGrid1PickListSelect(Sender: TObject);
begin
// make something with picklist itemindex, the current grid column is given by StringGrid1.Col
end;

Jesus Reyes A.

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to