Я начинающий, подскажите пожалуйста, как...
Если вы только начинаете осваивать Delphi или считаете, что ваш вопрос простой для более опытных участников форума, то задавайте его здесь, не надо создавать для этого отдельные темы.
Если вы размещаете вопрос здесь, то , пожалуйста, прочтите следующее:
1. когда будете задавать свой вопрос, то делайте это нажимая на "ответ"(не путать с "быстрый ответ") и кратко указывайте в "заголовке" тему своего вопроса;
2. опишите чего вы хотели добиться.
3. если у вас возникла какая-то ошибка, и вы не знаете как её исправить, то обязательно приведите текст самой ошибки;
4. если это необходимо, приведите фрагмент вашего кода(ни в коем случае не надо писать весь код), также при добавлении кода пользуйтесь тегами([code ] и [ /code]);
5. укажите версию Delphi, которую используете и все настройки проекта;
6. если у вас возникли проблемы с нестандартными компонентами, то обязательно приведите ссылку, по которой их можно скачать.
7. соблюдайте правила форума
Удачи.
Модераторы форума Delphi & Kylix: Delpher, kosfiz & OlgaKr
Если вы с чем-то несогласны или у вас есть предложения обращайтесь к модераторам в приват.
Проявите милосердие...
Вопрос: мне надо отправить с возвратом переменную компонента в процедуру, а компилятор ругается что так нельзя ([Error] Constant object cannot be passed as var parameter) . Как это сделать? Вот пример кода с этой ошибкой:
procedure Proc(var n:integer);
begin
n:=100;
end;
begin
Proc(Label1.Tag);
end;
procedure Proc(var n:integer);
begin
n:=100;
end;
var
LabTag: integer;
begin
Proc(LabTag);
Label1.Tag:= LabTag;
end;
Должно работать.
(или так):
function Proc: integer;
begin
Result:= 100;
end;
begin
Label1.Tag:= Proc;
end;
Попробовал через указатели
procedure Proc(n:Pinteger);
begin
n:=100;
end;
begin
Proc(@Label1.Tag);
end;
но и тут проблемы. Компилятор берет не все компоненты, например
PageControl1.ActivePageIndex
CheckListBox1.Checked[1]
не идут
1.Появляется форма где водится имя испытуемого и пароль (см. дальше);
2. После нажатия на кнопку "Далее" запускается тест.
Подскажите как добавить:
1. Функцию блокировки программы (не запуска не самого EXE-файла, а теста) в течении определенного времени если испытуемый не прошел тест.
2. Возможность отключить блокировку введя определены пароль.
3. Возможность с помощью меню (которое вызывается введением пароля) изменять пароль на отключения блокировки и на вызов данного меню + изменять время блокировки.
Может кто нибудь подскажет вариант со сохранением настроек в зашифрованій файл...?
P.S. Хочу сразу предупредить, что я новичок и с БД не умею работать.
Буду очень благодарен всем кто поможет
2. Не вижу сложностей, ввели пароль - сбросили переменную.
3. Еще одна переменная (время блокировки). Тоже пусть сохраняется в файл.
А что тут подсказывать.. Сохраняйте настройки в зашифрованный файл..
необходимо выбранный в OpenDialog1 файл скопировать в папку Rent,находящуюся в одном каталоге с .exe файлом.
var file1:string;
pc:PChar;
begin
OpenDialog1.Execute;
file1:=OpenDialog1.FileName;
pc:=PChar(file1);
CopyFile(pc,PChar(GetCurrentDir+'\Rent\1.rar'),True);
end;
После выполнения, ничего не происходит.Пробовал все различные способы найденные в интернете.
необходимо выбранный в OpenDialog1 файл скопировать в папку Rent,находящуюся в одном каталоге с .exe файлом.
После выполнения, ничего не происходит.Пробовал все различные способы найденные в интернете.
1. if OpenDialog1.Execute ....
2. CopyFile(PChar(dlgOpen.FileName) - вполне достаточно, зачем лишние переменные в данном случае
3. Win32Check(CopyFile(...));
4. Забудьте о GetCurentDir. И не вздумайте выставлять настройку TOpenDialog noChangeDir или-как-оно-там, каталог программы [COLOR="#ff0000"]<>[/COLOR] текущий, каталог программы = каталог exe файла программы.
1.Существует ли процедура в TForm, реагирующая на изменение размера окна? Если есть, то как называется?
2.Если сделать код
PaintBox1.height:=Form1.height;
PaintBox1.width:=Form1.width;
то появятся полосы прокрутки, которые очень не нужны. Они исчезают только при
PaintBox1.height:=Form1.height-32;
PaintBox1.width:=Form1.width-35;
но появляется пустое пространство между краем PaintBox и формой в 32 и 35 пикселей. Как это исправить?
Должно быть свойство,которое возвращает клиентскую ширину/высоту
[/QUOTE]
Form1.ClientWidth / Form1.ClientHeight. :)
var
XMLDoc: TXMLDocument;
Node : IXMLNode;
ms : TMemoryStream;
idHttp : TIdHTTP;
begin
idHttp:=TIdHTTP.Create(nil);
ms:=TMemoryStream.Create;
idHttp.Get('mycoolsite/1.php', ms);
ms.Seek(0, 0);
XMLDoc:=TXMLDocument.Create(nil);
XMLDoc.LoadFromStream(ms);
XMLDoc.Active:=true;
Node:=XMLDoc.DocumentElement.ChildNodes.Nodes[0];
Memo1.Lines.Add(VarToStr(Node.ChildNodes['stream'].ChildNodes['id']));
XMLDoc.Active:=false;
XMLDoc.Free;
ms.Free;
idHttp.Free;
end;
Стабильно падает с access violation на присвоении
Сразу хотелось бы заметить, что ответ от сервера приходит не пустой (я проверял), в заголовке xml-файла есть encoding="utf-8" и сам файл приходит тоже в utf-8.
К сожалению, все мои танцы с бубном не дали должного эффекта. А интуиция подсказывает, что раз такие падения, то я что-то делаю совсем не так. Где я допустил ошибку?
XMLDoc: IXMLDocument;
Пытаюсь откорректировать компонент, конкретно SpinEdit из Samples в Delphi7. Добавляю свои поля. Программно всё работает, но то что добавил не отображается в инспекторе объектов, хотя должно бы. Танцы с бубнами не помогли. Вопрос: что надо сделать чтобы все там отобразилось?
...
property Value: LongInt read GetValue write SetValue; //Родное
property ValueFl: Double read GetValueFl write SetValueFl; //Модификация (добавка)
...
Перекомпилить и переустановить samples.dpk
Нет такого файла. Если можно поподробней.
[COLOR="gray"]Оу. Ну да. Ну включите его в dclusr.dpk и компильните в нем - разницы особой нет.[/COLOR]
Хм. Да. Там нет процедуры Register, не покатит. Да и в Samples не только этот компонент. Тогда предлагаю назвать свой компонент иначе и добавить в dclusr.dpk с процедурой Register. Пример можно глянуть например тут:
C:\Program Files\Delphi7\Source\Decision Cube\MXREG.PAS
C:\Program Files\Delphi7\Source\Property Editors\BDEReg.pas
Вот задани
Выполнить табулирование функции на отрезке от хнач до хкон с шагом
h=Хнач-Хкон/N. Величины хнач , хкон , число точек N и параметр a вводить из однострочных полей редактирования. При нажатии на кнопку «Вычислить» произвести вычисления в точках отрезка, отстоящих друг от друга на шаг h. Результаты вычислений занести в одномерный массив результатов. При нажатии на кнопку «Вывод f(x)» вывести значения массива результатов в многострочное редактируемое поле Memo. При нажатии на кнопку «Выход» завершить работу приложения. Произвести табулирование для фукции:Корень квадратный,в нем дробь(3x+4ax)\10a
Вот код
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var x1,x2,N,i : integer;
m , a, h, y, x : real;
result : array [1.. 10] of real;
begin
a:=StrToFloat(Edit4.Text);
x:=x1;
// Вычисление шага функции
h:=(x2-x1)/N;
begin
Memo1.Lines.Add(FloatToStr(y));
x:=x+h;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var y,i,a,x,h:real;begin
begin
y:= sqrt(3*x+4*a*x)/10/a;
Memo1.Lines.Add(FloatToStr(y));
x:=x+h;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Edit1Change(Sender: TObject);
Var x1:real;begin
x1:=StrToInt(Edit1.Text);
end;
procedure TForm1.Edit2Change(Sender: TObject); Var x2:real;begin
x2:=StrToInt(Edit2.Text);
end;
procedure TForm1.Edit3Change(Sender: TObject);
var h,N, x2,x1 :real;begin
N:=StrToInt(Edit3.Text);
h:=(x2-x1)/N;
end;
procedure TForm1.Edit4Change(Sender: TObject);
var a:real;begin
a:=StrToFloat(Edit4.Text);
end;
end.
Очень надо:(
...
Очень надо:(
Переменные не в функциях объявляй, а где Form1:TForm1; объявлен.
то есть у меня всё правильно, только переменные нужно перенести?:confused:
Изначально указывая что A, B, C будут равны 1. От пользователя только ввести Х. Сперва рисовал через Канву, но потом узнал о TChar но появились трудности написания формулы.
begin
a := 1;
b := 1;
c := 1;
x := StrToInt (Edit1.Text);
for i :=1 to 100 do
begin
Series1.Clear;
Series1.AddXY(y := a*x*x + b*x + c) //собственно как тут следует оформлять?
end;
end;
что-то похоже на uses
windows,
Graphics;
var
tt:TCanvas;
begin
tt:= TCanvas.Create;
tt.Handle := GetDC(0);
while true do
begin
sleep (1);//чем больше тем меньше скорость заполнения
tt.LineTo(random(240),random(240));//занижено чтобы можно было выключить
end;
end.
в консоле
Особенности графики в Windows 7
Т9 такой Т9…Хоть бы смотрел,что пишешь ☺
Откуда вы берёте это наипаскуднейшее слово?!
Консоль,кстати,не нужна тут.И да,канву кто освобождать будет?
Консоль,кстати,не нужна тут.И да,канву кто освобождать будет?
Console application тебе так пойдет? могу объяснится по английски если слово консоль по русски подрозумевается другое.
"Хоть бы смотрел,что пишешь" я опечатался, мог бы понять, или ты такой зомби программер что тебе нужно точно писать букву в букву, точно как американец лол.
Ну нахрена этот разговор заводить чувак??? не смог помочь прошел мимо. в чем проблемы?
Мне?Нет,не надо:) А накидываться сразу тоже не надо,кстати.И чувство юмора хоть малейшее не помешало
В Windows 7 используется несколько иной механизм отрисовки.Попробуй задержку увеличь
ReleaseDC не забываем тоже
[COLOR="#eeeeee"]P.S.Ну и,дабы окончательно развеять все сомнения,писа́ть надо «в консолИ»[/COLOR]
Есть такая задача нарисовать диаграммы двух типов с помощью Canvas (другие варианты не рассматриваются), предполагается что есть десять значений от 0 до 10 (ограничение), на форме разместил 10 шт. эдитов и один элемент paintbox.
Как построить диаграмму из этих десяти значений? Диаграммы должны быть: 1. Стандартная в виде графика, 2. Столбцовая.
Дополнительный вопрос, как задать одновременно для 10 эдитов ограничения на ввод значений от 0 до 10?
Для числового ввода будет удобнее использовать SpinEdit.
Есть программа, организован трей.
Как сделать чтобы из автозапуска программа запускалась в свернутом виде, т.е. в трее?
Она сама должна свернуться при запуске по ярлыку из автозапуска.
Т.е включается комп, запускается прога, но в свернутом виде, дабы не маячила. А если в ручную то как обычно в развернутом. Как это реализовать/отследить?
Это ее нужно из командной строки чтоли все время запускать?
Примерчик можно?
Автозапуск как делается?Допустим,через реестр—создаёшь параметр типа REG_SZ с именем,допустим,MyProgAuto и задаёшь ему значение вроде C:\<путь к программе>\MyProg.exe -tray
В программе анализируешь аргументы командной строки и на основании их принимаешь нужное решение(не было аргументов—показываешь окно,был «-tray»—не показываешь)
Примерчик можно?
На автозапуске, при старте Windows записываем так (в реестре или ярлыке):
begin
if ParamCount > 0 then
if Paramstr(Paramcount) = '-tray' then
begin
// Здесь делаем что-то с показом главной формы, например,
// если она по дефолту видна, то её скрываем:
Visible:= false;
end;
Можно это делать прям в проекте (*.dpr) - так артефактов с морганием формы не будет. Проще способа нет.
А куда именно прописать в ярлыке? Попробовал в свойства/ярлык поле объект - выдает ошибку - неправильное имя файла
Там есть поле "окно" если выставить свернутое - сворачивается но в этом случае нет вызова FormShow, что меня немного не устраивает
Там есть поле "окно" если выставить свернутое - сворачивается но в этом случае нет вызова FormShow, что меня немного не устраивает
Чтоб долго рязинку не тянуть, вот примерчик как создать ярлык с нужными параметрами в автозагрузке. Компилим (под D7, но и в других делфях всёравно пойдёт:-), жмём на кнопку, перезагружаемся - можно и без перезагрузки: просто жмём в меню "Пуск -> Автозагрузка" на новый ярлычок, смотрим надпись на лейбле, затем запускаем компилянт просто из папки и глядим туда же - разница чувствуется?