![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Искатель |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Здравствуйте! Очень нуждаюсь в помощи знатоков в Делфи! (Стыдно спрашивать, но не некуда деваться – я пока ещё учусь)
В результате титанических усилий мне удалось создать некое подобие того, что должно быть. А именно – пытаюсь выполнить лабораторку «Работа с файлами», но плохо получается. Если можно не смейтесь надо мной. 1. После запуска компилятора почему-то не отображаются заголовки столбцов! 2. Не знаю, как правильно запрограммировать такие кнопки (белеберда какая-то получается): «Открыть файл» (т.е. ранее созданный файл) «Вывести в таблицу» (т.е. при нажатии на кнопку, введенные в Edit-ах данные появлялись в строку. Здесь у меня вроде сначала получилось, но потом я понял, что сделал неправильно) «Добавить запись» (т.е. после заполнения Edit-ов и нажатия на кнопку заполнялась бы следующая строка в таблице) «Удалить запись»: (при нажатии удалить выделенную! строку со сдвигом нижних строк вверх, к заголовку) Подскажите, если можно, где я напортачил ? Прикрепленные файлы ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата 1. После запуска компилятора почему-то не отображаются заголовки столбцов! Заголовки и не должны появляться после запуска компилятора. После компиляции и запуска программы - возможно. Но для этого присвоение заголовкам значений нужно сделать в событии OnCreate формы, а не по клику на СтрингГрид, и не по клику на кнопку:procedure TForm1.FormCreate(Sender: TObject);
begin
stringgrid1.Cells[0,0]:='Название фильма';
stringgrid1.Cells[1,0]:='Жанр';
stringgrid1.Cells[2,0]:='Страна';
stringgrid1.Cells[3,0]:='Год выпуска';
stringgrid1.Cells[4,0]:='Продолжительность';
StringGrid1.RowCount := 2;
StringGrid1.FixedRows := 1;
// Это для того, чтоб в таблице выделялась целая строка, а не одна ячейка
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 вообще убери, он не нужен, только мешает пользователю. Если нужно менять ширину столбцов - то делай это тоже при создании формы... |
Искатель |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Спасибо огромное! Сижу, колдую над проектом...
|
Искатель |
![]()
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
После выполнения всех инструкций часть проблем устранилась, спасибо!
Люди добрые! Подскажите, как связать компонент ComboBox1 с Edit-ами и таблицей. Т.е. чтобы после выбора из раскрывающегося списка какого-то фильма и заполнения полей в таблице отпечатывалась новая строка с этим фильмом. Я вроде бы всё это прописал, но идет подчеркивание красной линией и компилятор не запускается. Прикрепленные файлы ![]() |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Не путай сравнение и присваивание. В логических условиях используется именно сравнение, причем компилятор тебе об этом говорит. Убери двоеточие. И еще: не путай латинские и русские символы. У тебя первая буква в
comboBox1.ItemIndex:=0;
(обработчик FormCreate) - русская. Это не будет компилироваться. Исправь на латинскую. |
Искатель |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Спасибо!
![]() |
![]() ![]() |
![]() |
Текстовая версия | 27.07.2025 11:03 |