Добрый день! Необходимо написать графический редактор следующего вида: Окно разбито на 2 части, в левой вводятся параметры фигуры, в правой она отрисовывается. Например: для начала задан прямоугольник высотой 50 и шириной 100. Указываем высоту - 25, на ней ширина 50 и фигура должна преобразоваться, приняв форму песочных часов и далее в этом духе. Надеюсь нормально объяснил...
Программу еще не начал, код писать не прошу, необходима консультация в том, какие элементы выбрать для разработки, TPaintBox или TImage и т.д. и как лучше всё это отрисовывать, может кто может дать совет?
Добрый вечер! Снова нужна помощь форума, помогите, пожалуйста: У меня есть форма, на которой расположены StringGrid, куча Editов и еще компоненты. Как можно сделать сохранение введенных значений, чтобы одновременно, в один файл сохранялись StringGrid и Editы? Наткнулся в интернете на чьи-то комментарии, попытался переделать, но что-то у меня ничего путного не выходит...
Procedure TF_main.Save(Sender: TObject); var j:Byte; f:TextFile; begin AssignFile(f, 'Save.txt'); Rewrite(f); for j := 0 to ComponentCount - 1 do if Components[j] is TEdit then WriteLn(f, (Components[j] as TEdit).Text); CloseFile(f); SaveGrid('grid.dat',GridRoom); end;
Procedure TF_main.SaveGrid(Const S: String; Const Grid: TStringGrid); // Сохранение данных таблицы Var ff: TextFile; t: Integer; Begin AssignFile(ff, S); ReWrite(ff); try With Grid Do For t:=1 to RowCount - 1 Do WriteLn(ff, StringReplace(Rows[t].Text, #13#10, #9, [rfReplaceAll])); finally CloseFile(ff); end; End;
procedure TF_main.ClearGrid(Const Grid : TStringGrid); var i : Integer; begin //Очистка строк. Этот шаг необходим из-за "плавающего" бага //компонента TStringGrid. - Строки, удалённые через уменьшение значения //TStringGrid.RowCount на самом деле не всегда удаляются. - TStringGrid //их прячет и при последующем увеличении TStringGrid.RowCount в таблице опять //могут появиться ранее "удалённые" строки. Именно поэтому необходима очистка //перед удалением. for i := Grid.FixedRows to Grid.RowCount - 1 do begin Grid.Rows[i].Clear; end; //Удаление строк. //Здесь +1 - для того, чтобы после фиксированной строки осталась одна нефиксированная //строка - это необходимо для правильного функционирования таблицы. Grid.RowCount := Grid.FixedRows + 1; end;
Procedure TF_main.LoadGrid(Const S: String; Const Grid: TStringGrid); //Загрузка таблицы из файла Var ff: TextFile; St: String; //Индекс очередной строки в которую мы намереваемся записать данные из файла. RowNum : Integer; Begin //Файловая переменная связывается с именем файла. AssignFile(ff, S); //Открытие файла в режиме "только чтение". Reset(ff); try //Очистка таблицы. ClearGrid(Grid); //Индекс самой верхней нефиксированной строки. RowNum := Grid.FixedRows; //Цикл до тех пор пока не достигнут конец файла. While not Eof(ff) Do Begin //Читаем очередную строку из файла. ReadLn(ff, St); With Grid Do Begin //Если требуется, добавляем строку вниз таблицы. if RowNum = RowCount then begin RowCount := RowCount + 1; end; //Распределяем данные по ячейкам, ориентируюясь на знаки табуляции. Rows[RowNum].Text:=StringReplace(St, #9, #13#10, [rfReplaceAll]); End; End; finally //Закрываем файл. CloseFile(ff); end; End;
procedure Tf_main.N4Click(Sender: TObject); begin Save(Edit1); end;
Этот код у меня не получается адаптировать к своей программе, да и сохранение здесь идет в несколько заранее заданных файлов, моя программа, кстати, ниже есть... Может есть другие способы или это кто-то знает как подключить?