Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нестандартный буфер обмена, Как орг. нестандартный буфер обмена? 
:(
    Опции темы
DolgoDoom
Дата 26.5.2011, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 26.5.2011

Репутация: нет
Всего: нет



Здравствуйте, Уважаемые профессионалы!

Я конено прочитал правила, но к сожалению даже не знаю как подобраться к проблеме. Обшарил нет ничего похожего нет .
Помогите пожалуйста!

А проблема такая, нужно создать буфет обмена состоящий из 14 элементов, два из которых будут .Assign(JPG). 

Подскажите плз, как это можно организовать. 

 Пишу на Delphi.

Это сообщение отредактировал(а) DolgoDoom - 26.5.2011, 07:02
PM MAIL   Вверх
Frees
Дата 26.5.2011, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



сделай свой формат буфера обмена


Цитата(DolgoDoom @  26.5.2011,  08:53 Найти цитируемый пост)
А проблема такая, нужно создать буфет обмена состоящий из 14 элементов, два из которых будут .Assign(JPG). 

сложи все это в поток (TStream)
и http://www.delphisources.ru/pages/faq/base...morystream.html


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
CodeMonkey
Дата 26.5.2011, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



P.S. По ссылке: 
Цитата
ВАЖНО: Не удаляйте буфер после GlobalAlloc().
 OMG  smile 


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Frees
Дата 26.5.2011, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



Цитата(CodeMonkey @  26.5.2011,  11:19 Найти цитируемый пост)
 OMG

это хорошо или плохо?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
RomanEEP
Дата 26.5.2011, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 18.5.2006
Где: Коломна

Репутация: 5
Всего: 8



Что так насмешило СodeMonkey? Как гласит msdn здесь http://msdn.microsoft.com/en-us/library/ms...(v=vs.85).aspx: "If SetClipboardData succeeds, the system owns the object identified by the hMem parameter".
PM MAIL   Вверх
DolgoDoom
Дата 30.5.2011, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 26.5.2011

Репутация: нет
Всего: нет



Большое спасибо всем за отзывы и подсказки. Задача почти решена
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Grids,
  StdCtrls, ExtCtrls, RySwapStream, DB, ADODB;

type

  TZadanie = record
    Image : [color=red]???[/color] 
    V1, V2 ,V3 , V4 ,V5 , Key: String[25];
  end;

  TForm1 = class(TForm)
    RadioGroup1: TRadioGroup;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Panel1: TPanel;
    Button3: TButton;
    Grid: TDrawGrid;
    Label3: TLabel;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    ADOQuery2: TADOQuery;
    procedure RadioGroup1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure GridDrawCell(Sender: TObject; ACol, ARow: Integer;
              Rect: TRect; State: TGridDrawState);
  private
    FRow: Integer;
    FGridEnabled: Boolean;
    FStreamKind: Byte;
    Stream : TStream;
    FStreamActive: Boolean;
    FZadanie: TZadanie;
    procedure SetGridEnabled(const Value: Boolean);
    procedure SetStreamActive(const Value: Boolean);
  private
    property StreamActive : Boolean read FStreamActive write SetStreamActive;
    property GridEnabled : Boolean read FGridEnabled write SetGridEnabled;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

constructor TForm1.Create(AOwner: TComponent);
begin
  inherited;
  begin
  try
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT * FROM DB1');
  ADOQuery1.Active:=True;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Add('SELECT * FROM DB1');
  ADOQuery2.Active:=True;
  except
  on e:Exception do
  end;
  end;
  FRow := -1;

end;

destructor TForm1.Destroy;
begin
  StreamActive := False;
  inherited;
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);

  procedure StreamKind(const Value: Byte);
  begin
    if Value = 1 then Edit1.Color := clWindow
    else Edit1.Color := clBtnFace;
    Edit1.Enabled := Value = 1;
    Button1.Enabled := Value > 0;
    Button3.Enabled := False;
    FStreamKind := Value;
  end;

begin
  StreamActive := False;
  StreamKind(RadioGroup1.ItemIndex);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  StreamActive := True;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  GridEnabled := True;
end;

const
  ACount = 3;

procedure TForm1.GridDrawCell(Sender: TObject; ACol, ARow: Integer;
          Rect: TRect; State: TGridDrawState);
const
  _FlagsText: Longint = (DT_LEFT or DT_NOCLIP or
              DT_VCENTER or DT_SINGLELINE or DT_END_ELLIPSIS);
var

  Str: String;
begin
  if not GridEnabled then Exit
  else
  if (ARow < 0) or (ARow > ACount) then Exit;

  if FRow <> ARow then
  begin
    FRow := ARow;
    Stream.Position := ARow * SizeOf(TZadanie);
    Stream.Read(FZadanie, SizeOf(TZadanie));
  end;

  case ACol of
    1: Str := FZadanie.Key;
    2: Str := FZadanie.V1;
    3: Str := FZadanie.V2;
    4: Str := FZadanie.V3;
    5: Str := FZadanie.V4;
    6: Str := FZadanie.V5;
    7: Str := FZadanie.Image;
    else Str := '';
  end;

  with Grid.Canvas do
  begin
    if (ARow <> 0) and (ACol <> 0) then
    begin
      if (ARow mod 2) = 0 then Brush.Color := clInfoBk
      else Brush.Color := clWhite;
      FillRect(Rect);
      Font.Color := clBlack;
    end;
    Windows.DrawText(Handle, PChar(Str), Length(Str), Rect, _FlagsText);
  end
end;

procedure TForm1.SetStreamActive(const Value: Boolean);
var
  FZ: TZadanie;
begin
  if FStreamActive = Value then Exit;

  if Value then
  begin
    case FStreamKind of
      1: begin
            if Edit1.Text = '' then Edit1.Text := 'Temp.dat';
            Stream := TFileStream.Create(Edit1.Text, fmCreate);
         end;
      2: Stream := TMemoryStream.Create;
      3: Stream := TRySwapStream.Create;
      else Exit;
    end;

    FZ.Key := 'Ключ';
    FZ.Image := 'Вопрос';
    FZ.Variant1 := 'Вариант 1';
    FZ.Variant2 := 'Вариант 2';
    FZ.Variant3 := 'Вариант 3';
    FZ.Variant4 := 'Вариант 4';
    FZ.Variant5 := 'Вариант 5';
    Stream.Write(FZ, SizeOf(TZadanie));

{выводим первую строку}

    begin
    ADOQuery1.First;
    ADOQuery1.Next;
      FZ.Key := (ADOQuery1.FieldByName('Key').AsString);
      FZ.Image := [color=red]????[/color];
      FZ.Variant1 := (ADOQuery1.FieldByName('V1').AsString);
      FZ.Variant2 := (ADOQuery1.FieldByName('V2').AsString);
      FZ.Variant3 := (ADOQuery1.FieldByName('V3').AsString);
      FZ.Variant4 := (ADOQuery1.FieldByName('V4').AsString);
      FZ.Variant5 := (ADOQuery1.FieldByName('V5').AsString);
      Stream.Write(FZ, SizeOf(TZadanie));

    end;

    Button1.Enabled := False;
    Button3.Enabled := True;
  end else
  begin
    GridEnabled := False;
    Stream.Free;
  end;

  FStreamActive := Value;
end;

procedure TForm1.SetGridEnabled(const Value: Boolean);
begin
  if FGridEnabled = Value then Exit;
  if Value then
  begin
    Grid.RowCount := ACount;
    Grid.Enabled := True;
    Grid.Color := clWindow;
    Button3.Enabled := False;
  end else
  begin
    Grid.RowCount := 2;
    Grid.Enabled := False;
    Grid.Color := clBtnFace;
  end;

  FGridEnabled := Value;
end;

end.


Подскажите пожалуйста как теперь туда запихать Image. Из БД
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.