Я начинающий, подскажите пожалуйста, как...
Если вы только начинаете осваивать Delphi или считаете, что ваш вопрос простой для более опытных участников форума, то задавайте его здесь, не надо создавать для этого отдельные темы.
Если вы размещаете вопрос здесь, то , пожалуйста, прочтите следующее:
1. когда будете задавать свой вопрос, то делайте это нажимая на "ответ"(не путать с "быстрый ответ") и кратко указывайте в "заголовке" тему своего вопроса;
2. опишите чего вы хотели добиться.
3. если у вас возникла какая-то ошибка, и вы не знаете как её исправить, то обязательно приведите текст самой ошибки;
4. если это необходимо, приведите фрагмент вашего кода(ни в коем случае не надо писать весь код), также при добавлении кода пользуйтесь тегами([code ] и [ /code]);
5. укажите версию Delphi, которую используете и все настройки проекта;
6. если у вас возникли проблемы с нестандартными компонентами, то обязательно приведите ссылку, по которой их можно скачать.
7. соблюдайте правила форума
Удачи.
Модераторы форума Delphi & Kylix: Delpher, kosfiz & OlgaKr
Если вы с чем-то несогласны или у вас есть предложения обращайтесь к модераторам в приват.
ну Я знаю что одно из условий цикла: if A[i,j] mod 2<>0 then и вот как дальше все это вывести в Memo и паралелльно составить алгоритм на сред арифметическое и это тоже вывести в Мемо...
РодительскоеОкно.Поле.
Заранее спасибо
try
string_list.Text := Edit1.Text;
string_list.SaveToFile('text.txt);
finally
string_list.Free;
end;
try
string_list.LoadFromFile('text.txt);
Memo1.Lines.Assign(string_list);
// Label1.Text := string_list.Text;
finally
string_list.Free;
end;
Проблема в следующем: в компоненте DBGrid выводится таблица базы данных Access, делаю поиск по № телефона (для чего в компоненте DBComboBox выводится содержимое этого поля таблицы), по нажатию Button1 идет запрос к БД с выборкой.
Код события Button1Click приведен ниже.
begin
ADOquery1.Close;
ADOquery1.SQL.Clear;
ADOquery1.SQL.Add('SELECT [Номер телефона], [Улица], [Дом], [Квартира (комната)], [Фамилия Наименование предприятия)], [Уплотнение], [Услуги ЭАТС]');
ADOquery1.SQL.Add('FROM Абонентские_Карточки where Номер телефона =xxx');
ADOquery1.Parameters.ParamByName('xxx').Value:=DBcombobox1.text;
Buf:=DBcombobox1.text;
ADOquery1.Open;
end;
Переменная «ххх» используется для считывания содержимого DBComboBox и осуществления поиска в БД. При выполнении процедуры ошибка "ADOQuery1 параметр "xxx" not faund".
А причину не понимаю (последний раз программу писал 4 года назад, так что простите если вопрос глуп)
ADOquery1.SQL.Add('FROM Товары INNER JOIN Склад ON [Товары].[Кодтовара]=[Склад].[Кодтовара] where Марка =xxx');
Поэтому не ставил
Не, не помогло.
begin
ADOquery1.Close;
DbcomboBox1.Enabled:=False;
ADOquery1.SQL.Clear;
ADOquery1.SQL.Add('SELECT [Номер телефона], [Улица], [Дом], [Квартира (комната)], [Фамилия Наименование предприятия)], [Уплотнение], [Услуги ЭАТС]');
ADOquery1.SQL.Add('FROM Абонентские_Карточки where [Номер телефона]=xxx');
ADOquery1.Parameters.ParamByName('xxx').Value:=DBcombobox1.text;
Buf:=DBcombobox1.text;
Label1.Caption:=Buf;
ADOquery1.Open;
end;
Поле просто очищается, почему не считывается значение поля DBcombobox1.text???
Все, спасибо, разобрался, но может подскажите можно ли сделать в компоненте DBGrid чтобы колонки были фиксированного размера, а не поправлять их каждый раз, или хотя бы что бы они вписывались в размер DBGrid
ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
WordApp, NewDoc, WordTable: OLEVariant;
iRows, iCols, iGridRows, jGridCols: Integer;
begin
try
// Create a Word Instance
// Word Instanz erzeugen
WordApp := CreateOleObject('Word.Application');
except
// Error...
// Fehler....
Exit;
end;
// Show Word
// Word anzeigen
WordApp.Visible := True;
// Add a new Doc
// Neues Dok einfugen
NewDoc := WordApp.Documents.Add;
// Get number of columns, rows
// Spalten, Reihen ermitteln
iCols := StringGrid1.ColCount;
iRows := StringGrid1.RowCount;
// Add a Table
// Tabelle einfugen
WordTable := NewDoc.Tables.Add(WordApp.Selection.Range, iCols, iRows);
// Fill up the word table with the Stringgrid contents
// Tabelle ausfullen mit Stringgrid Daten
for iGridRows := 1 to iRows do
for jGridCols := 1 to iCols do
WordTable.Cell(iGridRows, jGridCols).Range.Text :=
StringGrid1.Cells[jGridCols - 1, iGridRows - 1];
// Here you might want to Save the Doc, quit Word...
// Hier evtl Word Doc speichern, beenden...
// ...
// Cleanup...
WordApp := Unassigned;
NewDoc := Unassigned;
WordTable := Unassigned;
end;
Но у меня выбивается ошибка:
[Ошибка] Unit1.pas(54): Undeclared identifier: 'CreateOleObject'
Большое спасибо всем кто поможет.
Плюс я нашел, как мне кажется лучший код:
var
W, Table: Variant;
Row, Col, i, j: Integer;
begin
W := CreateOleObject('Word.Application');
W.Documents.Add;
W.ActiveDocument.Tables.Add(W.ActiveDocument.Range,
StringGrid1.RowCount, StringGrid1.ColCount);
Table := W.ActiveDocument.Tables.Item(1);
Table.Style := 'Сетка таблицы';
for i := 0 to StringGrid1.RowCount - 1 do
for j := 0 to StringGrid1.ColCount - 1 do
Table.Cell(i + 1, j + 1).Range.Text := StringGrid1.Cells[j, i];
W.Visible := True;
end;
Спасибо @pixo $oft, что попытался помочь.
Ситуация: ест программа в ней 8 форм. Первая (главная) форма используется только в начале, а после ей присваивается Visible:=False. На главной форме размещен MediaPlayer.
Проблема: если в процессе работы, находясь уже не на первой форме, свернуть и развернуть программу на экране появляется Panel, которая в свою очередь была дисплеям для MediaPlayer, и здвинуть ее нельзя.
Вопрос: 1. как правильно отключать (скрывать) форму.
2. Если форма больше не нужна ее нужно "выгружать" с памяти, ели да то как?
Проверил на 2х формах, ничего не появляется. (D7)
1. как правильно отключать (скрывать) форму.
2. Если форма больше не нужна ее нужно "выгружать" с памяти, ели да то как?
1. Hide или Visible := False, что по сути одно и то же.
2. В OnClose ставить Action в caFree. Только обычно формы не много занимают памяти, в то время, как пересоздавать её заново не мгновенный процесс (пусть и очень быстрый). Тем более, если на форме много элементов - создание будет дольше.
Передо мной стоит задача: нарисовать карту Карно от 4 аргументов. Думал как это сделать, но так как только начинаю, то ещё не знаю всех возможностей.
Суть карты для тех кто не в теме: идут наборы аргументов которые в двоичной системе обозначают цифру. И для каждого набора в карте прописывается определенное значение функции. То есть что-то наподобие матрицы и её коэффициентов.
До меня не доходит с помощью каких элементов реализовывать. Единственный вариант который приходит в голову это создать 16 Тэдитов, каждый из них назвать как: TE_0, TE_1 как-то так. И уже с помощью них заполнять карту карно. Но должен быть какой-то способ попроще.
Возможно элементы TStringGrid или TdrawGrid каким-то образом спасут ситуацию?
for I := 1 to 16 do
begin
E := Form1.FindComponent('Edit'+IntToStr(i)) as TEdit;
E.Text := Listbox5.Items[I-1];
end;
Все работает.
Для StringGrid поставь такие значения свойств FixedRows=1; ColCount=2; RowCount=16; Options/goEditing=True. И пишем такой код:
// Процедура заполнения первой колонки
var i:byte;
begin
for i:=0 to 16 do
StringGrid1.Cells[0,i]:=' TE_'+inttostr(i);
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
// После заполнения табл. нажимаем кнопку для начала вычислений
var i:byte;
begin
for i:=0 to 16 do
Listbox1.Items.Add(StringGrid1.Cells[1,i]);// Я не совсем понял, что тебе надо делать с данными, потому просто написал, что бы они выводились в Listbox
end;
DBGrid1.DataSource.DataSet.GotoBookmark(pointer(DBGrid1.SelectedRows.Items));
Но не работает
2. TADOQuery + "LIKE" запрос
DBGrid1.DataSource.DataSet.Next;
Добавить стиль WS_EX_APPWINDOW ?
???
Это что-то новое!:D
А теперь уточните,что вам конкретно надо и какими средствами
=> c:\directory
TCategoryPanelGroup - контейнер, сами разворачивающиеся панельки - TCategoryPanel. Появились, по моему, только с 2009-ой версии.
Не подскажете как считать из стрингрида(Tstringgrid) столбец(т.е данные в ячейках) за исключением нижней строки (всего их 6 stringgrid 6х5) и записать его
в переменную с типом String.
Не подскажете как считать из стрингрида(TStringGrid) столбец...
Ячейки можно прочитать из массива StringGrid.Cells[X, Y]. Столбец, соответственно, Cells[0, 0]...Cells[0, 4] - где 0 -номер столбца, 0-4 - номера строк.
Оформите это в цикл и будет то, что нужно.
v:=Stringgrid1.Cells[0,j];
showmessage(v);
выводится только один символ
v:=v+Stringgrid1.Cells[0,j];
showmessage(v)