Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.11.2009, 19:45
SSkif SSkif вне форума
Прохожий
 
Регистрация: 05.11.2009
Сообщения: 6
Репутация: 10
По умолчанию ПОМОГИТЕ ПОЖАЛУЙСТА ТУПОМУ ЧАЙНИКУ

Доброе время суток! Подскажите пожалуйста как прописать чёб при нажатии на Button можнобылоб открыть Image.
Ответить с цитированием
  #2  
Старый 21.11.2009, 20:42
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Код:
if OpenPictureDialog1.Execute
then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName)
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 21.11.2009, 21:51
SSkif SSkif вне форума
Прохожий
 
Регистрация: 05.11.2009
Сообщения: 6
Репутация: 10
По умолчанию

Чёт не получается, выдаёт ошибку. Вот для наглядности тело проги:

Код:
// !!! Исходники программы могут быть использованы с любой целью,
// !!! но при наличии ссылки "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  
Старый 21.11.2009, 22:02
SSkif SSkif вне форума
Прохожий
 
Регистрация: 05.11.2009
Сообщения: 6
Репутация: 10
По умолчанию Продолжение

Код:
Востановка данных для уже записанного вопроса
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.
На Form1 я кинул Image и Button, быть может ещё чегото не хватает? Подскажите пожалуйста.
Ах, да.. эта прога написана для создания файла тестирования, всё отлично но есть один минус - нельзя вставить картинку при создании вопроса. Помогите исправить этот недостаток.
Ответить с цитированием
  #5  
Старый 21.11.2009, 22:17
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

TOpenPictureDialog кинь на форму из вкладки Dialogs

...

ой, код не посмотрел...
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;

Последний раз редактировалось AleD, 21.11.2009 в 22:21.
Ответить с цитированием
  #6  
Старый 21.11.2009, 22:35
SSkif SSkif вне форума
Прохожий
 
Регистрация: 05.11.2009
Сообщения: 6
Репутация: 10
По умолчанию

Спасибо получилось.Только вот при переходе к следущему вопросу остаётся эта картинка. Чё сделать надо чтоб можнобылоб выбрать новую?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:20.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025