![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброе время суток! Подскажите пожалуйста как прописать чёб при нажатии на Button можнобылоб открыть Image.
|
|
#2
|
||||
|
||||
|
Код:
if OpenPictureDialog1.Execute then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName) |
|
#3
|
|||
|
|||
|
Чёт не получается, выдаёт ошибку. Вот для наглядности тело проги:
Код:
// !!! Исходники программы могут быть использованы с любой целью,
// !!! но при наличии ссылки "ATH, helpes.narod.ru"
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Menus, ExtCtrls, uEncrypt;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
MI_NewTest: TMenuItem;
MISave: TMenuItem;
MICloseAll: TMenuItem;
MIClose: TMenuItem;
Edt_Question: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edt_V1: TEdit;
Edt_V2: TEdit;
Edt_V3: TEdit;
Edt_V4: TEdit;
RG_CorrectQ: TRadioGroup;
Btn_Last: TButton;
Btn_Next: TButton;
Memo_Temp: TMemo;
Lbl_NameTest: TLabel;
GBox1: TGroupBox;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
MIOpen: TMenuItem;
N2: TMenuItem;
Button1: TButton;
Image1: TImage;
Button2: TButton;
procedure PrCleanItems(Sender: TObject);
procedure PrNewTest(Sender: TObject);
procedure PrSaveMemo(Sender: TObject);
procedure Btn_NextClick(Sender: TObject);
procedure PrLastItems(i:byte;Sender: TObject);
procedure Btn_LastClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure MI_NewTestClick(Sender: TObject);
procedure MISaveClick(Sender: TObject);
procedure MICloseClick(Sender: TObject);
procedure MICloseAllClick(Sender: TObject);
procedure MIOpenClick(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
// Номер вопроса
Nom_Question: Byte;
// Имя файла
PrFileName: string;
implementation
{$R *.DFM}
uses unit2, Unit3;
//Функция для перевода дробей с запятыми в дроби с точками
Function Spoint(S:string):String;
var
c55_, new:string;
ac4_:integer;
begin
c55_:=S;
ac4_:=pos('|', c55_);
If ac4_<>0 then begin
new:=Copy(S, 1, ac4_-1);
Spoint:=new;
end else
Spoint:=S;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Nom_Question:=1;
end;
// Очистка всех пункам, кроме хар-к теста
procedure TForm1.PrCleanItems(Sender: TObject);
begin
Edt_Question.Text:='';
Edt_V1.Text:='';
Edt_V2.Text:='';
Edt_V3.Text:='';
Edt_V4.Text:='';
RG_CorrectQ.ItemIndex:=0;
end;
// Создание нового теста
procedure TForm1.PrNewTest(Sender: TObject);
begin
// Очистка временного объекта
Memo_Temp.Lines.Clear;
Btn_Last.Enabled:=False;
Btn_Next.Enabled:=True;
Nom_Question:=1;
Label1.Caption:='Вопрос №1 :';
PrCleanItems(Sender);
end;
// Ввод данных вопроса в промежуточный объект
procedure TForm1.PrSaveMemo(Sender: TObject);
begin
if Memo_Temp.Lines.Count=(2+6*(Nom_Question-1))then
begin
// Создание новых строчек в промежуточном объекте
Memo_Temp.Lines.Add(encrypt(Edt_Question.Text,30000));
Memo_Temp.Lines.Add(encrypt(Edt_V1.Text,30000));
Memo_Temp.Lines.Add(encrypt(Edt_V2.Text,30000));
Memo_Temp.Lines.Add(encrypt(Edt_V3.Text,30000));
Memo_Temp.Lines.Add(encrypt(Edt_V4.Text,30000));
Memo_Temp.Lines.Add(encrypt(IntToStr(RG_CorrectQ.ItemIndex+1),30000));
end
else
begin
// Узменение уже существующих данных
Memo_Temp.Lines[2+6*(Nom_Question-1)]:=encrypt((Edt_Question.Text),30000);
Memo_Temp.Lines[3+6*(Nom_Question-1)]:=encrypt((Edt_V1.Text),30000);
Memo_Temp.Lines[4+6*(Nom_Question-1)]:=encrypt((Edt_V2.Text),30000);
Memo_Temp.Lines[5+6*(Nom_Question-1)]:=encrypt((Edt_V3.Text),30000);
Memo_Temp.Lines[6+6*(Nom_Question-1)]:=encrypt((Edt_V4.Text),30000);
Memo_Temp.Lines[7+6*(Nom_Question-1)]:=encrypt(IntToStr(RG_CorrectQ.ItemIndex+1),30000);
end;
end;
procedure TForm1.Btn_NextClick(Sender: TObject);
begin
PrSaveMemo(Sender);
if Memo_Temp.Lines.Count>(8+6*(Nom_Question-1)) then
PrLastItems(0,Sender) else PrCleanItems(Sender);
inc(Nom_Question);
Label1.Caption:='Вопрос №'+IntToStr(Nom_Question)+' :';
// На последнем вопросе блокировать кнопку Btn_Next
if Nom_Question=StrToInt(Spoint(Form2.Edt_Kol.Text)) then
Btn_Next.Enabled:=False;
Btn_Last.Enabled:=True;
///Form2.Edt_Kol.Text
end; |
|
#4
|
|||
|
|||
|
Код:
Востановка данных для уже записанного вопроса
procedure TForm1.PrLastItems(i:byte;Sender: TObject);
begin
Edt_Question.Text:=decrypt(Memo_Temp.Lines[2+6*(Nom_Question-i)],30000);
Edt_V1.Text:=decrypt(Memo_Temp.Lines[3+6*(Nom_Question-i)],30000);
Edt_V2.Text:=decrypt(Memo_Temp.Lines[4+6*(Nom_Question-i)],30000);
Edt_V3.Text:=decrypt(Memo_Temp.Lines[5+6*(Nom_Question-i)],30000);
Edt_V4.Text:=decrypt(Memo_Temp.Lines[6+6*(Nom_Question-i)],30000);
RG_CorrectQ.ItemIndex:=StrToInt(decrypt(Memo_Temp.Lines[7+6*(Nom_Question-i)],30000))-1;
end;
procedure TForm1.Btn_LastClick(Sender: TObject);
begin
PrSaveMemo(Sender);
// Востановление последующей инф.
PrLastItems(2,Sender);
// Уменьшение порядкового номера вопроса
dec(Nom_Question);
Label1.Caption:='Вопрос №'+IntToStr(Nom_Question)+' :';
// На последнем вопросе блокировать кнопку Btn_Next
if Nom_Question=1 then
Btn_Last.Enabled:=False;
Btn_Next.Enabled:=True;
end;
procedure TForm1.MI_NewTestClick(Sender: TObject);
begin
MI_NewTest.Enabled:=false;
MIOpen.Enabled:=False;
Form2.ShowModal;
end;
// Пункт меню "Сохранить все"
procedure TForm1.MISaveClick(Sender: TObject);
var
TempFileName: string;
begin
PrSaveMemo(Sender);
SaveDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
if SaveDialog1.Execute then
begin
if pos('.tes',SaveDialog1.FileName)>0 then
TempFileName:=SaveDialog1.FileName
else
TempFileName:=SaveDialog1.FileName+'.tes';
Memo_Temp.Lines.SaveToFile(TempFileName);
end
else Memo_Temp.Lines.Clear;
end;
procedure TForm1.MICloseClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.MICloseAllClick(Sender: TObject);
begin
MICloseAll.Enabled:=False;
MISave.Enabled:=False;
MISaveClick(Sender);
GBox1.Visible:=False;
FormCreate(Sender);
// --- v.1012 ---
MIOpen.Enabled:=True;
MI_NewTest.Enabled:=True;
end;
procedure TForm1.MIOpenClick(Sender: TObject);
var
i,j: byte;
Temp_String,
Password_String: string;
EndFor: boolean;
/// temp_string:string;
begin
// Если был открыт файл, то его закрываем.
if Memo_Temp.Lines.Count>4 then
MICloseAllClick(Sender)
else
begin
PrNewTest(Sender);
OpenDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
if OpenDialog1.Execute then
begin
Memo_Temp.Lines.LoadFromFile(OpenDialog1.FileName);
// --- v.1012 --- Работа с паролем ---
Temp_String:=decrypt(Memo_Temp.Lines[1], 30000);
for i:=1 to length(Temp_String) do
begin
if ((Temp_String[i]=' ')and not EndFor) then
for j:=i+1 to length(Temp_String) do
if ((Temp_String[j]=' ')and not EndFor) then
begin
if i+1=j then
Password_String:=''
else
Password_String:=copy(Temp_String,i+1,j-i-1);
EndFor:=true;
end;
end;
// Алекс - обновлено
if Password_String<>'' then begin PasswordDlg.Password.Text:=''; PasswordDlg.ShowModal; end;
if not (PasswordDlg.Password.Text=Password_String) then
begin
Memo_Temp.Lines.Clear;
abort;
end;
// Активицазия тункта "Сохранить все"
MISave.Enabled:=True;
// Активицазия тункта "Закрыть все"
MICloseAll.Enabled:=True;
GBox1.Visible:=True;
Lbl_NameTest.Caption:=Memo_Temp.Lines[0];
Form2.Edt_Kol.Text:=copy(decrypt(Memo_Temp.Lines[1],30000),
1,pos(' ',decrypt(Memo_Temp.Lines[1],30000))-1);
// Добавил Алекс - здесь раскладываем строку для перепароливания теста
// и кладем данные в форму 2 - Потом перешифруем строку
// --- v.0105 --- Время на 1-н вопрос (мин) ---
i:=pos(':',Temp_String);
while Temp_String[i]<>' ' do
begin
dec(i);
end;
form2.Edt_Kol.Text:= copy(Temp_String, 0,
pos('|',Temp_String)-1);
/// ShowMessage(form2.Edt_Kol.Text);
// --- v.0105 --- Кол-во тестируемых вопросов ---
form2.Edt_KolQuestionTesting.text:=(copy(Temp_String, pos('|',Temp_String)+1,
pos(' ',Temp_String)-pos('|',Temp_String) -1));
/// ShowMessage(form2.Edt_KolQuestionTesting.text);
form2.Edt_TimeMin.text:=(copy(Temp_String,i+1,pos(':',Temp_String)-i-1));
/// ShowMessage( form2.Edt_TimeMin.text);
// --- v.0105 --- Время на 1-н вопрос (сек) ---
form2.Edt_TimeSec.text:=(copy(Temp_String,pos(':',Temp_String)+1,length(Temp_String)-pos(':',Temp_String)));
//// ShowMessage( form2.Edt_TimeSec.text);
// Конец добавления
PrLastItems(1,Sender);
// --- v.1012 --- Работа с меню ---
MIOpen.Enabled:=False;
MI_NewTest.Enabled:=false;
end
else Abort;
end;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
ShowMessage('Разработчик: ATH;'+#13+#10+
' '+#13+#10+
'Благодарности'+#13+#10+
' '+#13+#10+
'* за разработку блока шифрования и интерфейса:'+#13+#10+
' Alex Stankin;'+#13+#10+
' '+#13+#10+
'* за помощь в разработке:'+#13+#10+
' @nton,'+#13+#10+
' CJ,'+#13+#10+
' Par@do][ ;'+#13+#10+
' '+#13+#10+
'http:\\www.helpes.narod.ru'+#13+#10+
'e-mail: antonatp@mail.ru; helpes@narod.ru');
end;
// Добавлено Алекс
procedure TForm1.Button1Click(Sender: TObject);
begin
PasswordDlg.Password.Text:='';
PasswordDlg.ShowModal;
Memo_Temp.Lines[1]:=(encrypt(Form2.Edt_Kol.Text+'|'+Form2.Edt_KolQuestionTesting.Text+' '+PasswordDlg.Password.Text+' '+Form2.Edt_TimeMin.Text+':'+Form2.Edt_TimeSec.Text,30000));
PasswordDlg.Password.text:='';
end;
procedure TForm1.Image1Click(Sender: TObject);
begin
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
end;
end.Ах, да.. эта прога написана для создания файла тестирования, всё отлично но есть один минус - нельзя вставить картинку при создании вопроса. Помогите исправить этот недостаток. |
|
#5
|
||||
|
||||
|
TOpenPictureDialog кинь на форму из вкладки Dialogs
... ой, код не посмотрел... Последний раз редактировалось AleD, 21.11.2009 в 22:21. |
|
#6
|
|||
|
|||
|
Спасибо получилось.Только вот при переходе к следущему вопросу остаётся эта картинка. Чё сделать надо чтоб можнобылоб выбрать новую?
|