Здравствуйте! Очень нуждаюсь в помощи знатоков в Делфи! (Стыдно спрашивать, но не некуда деваться – я пока ещё учусь) В результате титанических усилий мне удалось создать некое подобие того, что должно быть. А именно – пытаюсь выполнить лабораторку «Работа с файлами», но плохо получается. Если можно не смейтесь надо мной. 1. После запуска компилятора почему-то не отображаются заголовки столбцов! 2. Не знаю, как правильно запрограммировать такие кнопки (белеберда какая-то получается): «Открыть файл» (т.е. ранее созданный файл) «Вывести в таблицу» (т.е. при нажатии на кнопку, введенные в Edit-ах данные появлялись в строку. Здесь у меня вроде сначала получилось, но потом я понял, что сделал неправильно) «Добавить запись» (т.е. после заполнения Edit-ов и нажатия на кнопку заполнялась бы следующая строка в таблице) «Удалить запись»: (при нажатии удалить выделенную! строку со сдвигом нижних строк вверх, к заголовку) Подскажите, если можно, где я напортачил ?
volvo
20.03.2011 3:07
Цитата
1. После запуска компилятора почему-то не отображаются заголовки столбцов!
Заголовки и не должны появляться после запуска компилятора. После компиляции и запуска программы - возможно. Но для этого присвоение заголовкам значений нужно сделать в событии OnCreate формы, а не по клику на СтрингГрид, и не по клику на кнопку:
// Это для того, чтоб в таблице выделялась целая строка, а не одна ячейка StringGrid1.Options := StringGrid1.Options + [goRowSelect]; end;
Цитата
2. Не знаю, как правильно запрограммировать такие кнопки
По кнопке "Вывести в таблицу". Для начала, посмотри внимательно на предыдущую процедуру. Я там не просто так выставил 2 строки в таблице, и одну - фиксированную. Теперь добавление данных к таблице можно сделать так::
procedure TForm1.Button2Click(Sender: TObject); begin with StringGrid1 do begin Cells[0, RowCount-FixedRows]:=Edit1.text; Cells[1, RowCount-FixedRows]:=Edit2.text; Cells[2, RowCount-FixedRows]:=Edit3.text; Cells[3, RowCount-FixedRows]:=Edit4.text; Cells[4, RowCount-FixedRows]:=Edit5.text; RowCount := RowCount + 1; end; end;
Всё. Больше ничего здесь быть не должно. Никакой работы с файлами. Задача этого обработчика - добавить данные в таблицу (это то, что написано на кнопке), а не открыть зачем-то еще текстовый файл, а потом его закрыть. Для работы с файлом существуют другие обработчики. Каждый занимается строго своим делом, иначе будет бардак.
Цитата
«Добавить запись» (т.е. после заполнения Edit-ов и нажатия на кнопку заполнялась бы следующая строка в таблице)
Следующая строка в таблице теперь заполняется при нажатии на "Вывести в таблицу". Кнопку "Добавить запись" можешь убрать.
Цитата
«Удалить запись»: (при нажатии удалить выделенную! строку со сдвигом нижних строк вверх, к заголовку)
Как это сделать написано в " Drkb -> VCL -> StringGrid -> Удаление и добавление столбцов и колонок -> Вставка и удаление строк в StringGrid "
А метод TStringGrid.OnClick вообще убери, он не нужен, только мешает пользователю. Если нужно менять ширину столбцов - то делай это тоже при создании формы...
Искатель
20.03.2011 13:02
Спасибо огромное! Сижу, колдую над проектом...
Искатель
20.03.2011 16:58
После выполнения всех инструкций часть проблем устранилась, спасибо! Люди добрые! Подскажите, как связать компонент ComboBox1 с Edit-ами и таблицей. Т.е. чтобы после выбора из раскрывающегося списка какого-то фильма и заполнения полей в таблице отпечатывалась новая строка с этим фильмом. Я вроде бы всё это прописал, но идет подчеркивание красной линией и компилятор не запускается.
volvo
20.03.2011 18:12
Не путай сравнение и присваивание. В логических условиях используется именно сравнение, причем компилятор тебе об этом говорит. Убери двоеточие. И еще: не путай латинские и русские символы. У тебя первая буква в
comboBox1.ItemIndex:=0;
(обработчик FormCreate) - русская. Это не будет компилироваться. Исправь на латинскую.
Искатель
20.03.2011 21:04
Спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.