Ir al contenido


Foto

Que error es "indentifier idents no member "Create".


  • Por favor identifícate para responder
2 respuestas en este tema

#1 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 24 mayo 2016 - 01:08

Uso un procedure para dar aviso de borrado tal que así, aunque algunos expertos acosejan usar "MessageDlg" en vez
de Application:

delphi
  1. procedure TForm2.JvXPBar1Items2DblClick(Sender: TObject); // BOTON "BORRAR"
  2. var
  3. reply, boxstyle: integer;
  4. begin
  5. with Application do
  6. begin
  7. boxstyle:= MB_ICONQUESTION + MB_YESNO;
  8. reply:= MessageBox('¿Desea borrar...?','Atención',boxstyle);
  9. if (reply = IDYES) then
  10. begin
  11. Datamodule1.ZQuery5.Close;
  12. Datamodule1.ZQuery5.SQL.Text:='DELETE * FROM "personas" WHERE codigo = '+ QuotedStr(Datamodule1.ZQuery1.FieldByName('codigo').AsString);
  13. Datamodule1.ZQuery5.ExecSQL;
  14. end;
  15. end;
  16. end;

Pero en la misma unidad existe otro procedure, donde inserto un pequeño icono en un DBGrid, pero me da error en este procedimiento DrwaColumnCell cuando implementado el procedimiento anterior. Si elimino el procedimiento arriba indicado, deja de darme este error. De hecho dispongo de este mismo procedimiento de aviso reajustado para salir de la aplicación en otro unidad y no se me ha dado el caso de conflicto con el procedimiento DrawColumCell.

delphi
  1. procedure TForm2.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  2. DataCol: Integer; Column: TColumn; State: TGridDrawState);
  3. var
  4. fixRect: TRect;
  5. bitmap: TBitmap;
  6. imgIndex, bmpwidth: Integer;
  7. begin
  8.  
  9. if column.Field = Datamodule1.Zquery1.FieldByname('edad') then
  10. begin
  11. if Datamodule1.Zquery1.FieldByName('edad').AsInteger < 10 then
  12. imgIndex:= 0
  13. else
  14. imgIndex:= 1;
  15. bitmap:= TBitmap.Create; //******************!! ERROR: IDENTIFIER IDENTS NO MEMBER "CREATE"
  16. try
  17. ImageList3.GetBitmap(imgIndex,bitmap);
  18. DBGrid1.Canvas.Draw(Rect.Left+5, Rect.Top+2, bitmap);
  19. finally
  20. bmpwidth:= Bitmap.Width;
  21. bitmap.Free;
  22. end;
  23. fixRect.left:= Rect.left + bmpwidth + 2;
  24. end;

Llevo varios días investigando y revisando y no se por donde dar con el problema.
 
Un saludo
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 24 mayo 2016 - 02:50

Cambia todo donde está Application y en vez de ello utiliza MessageDLG:


delphi
  1. procedure TForm2.JvXPBar1Items2DblClick(Sender: TObject); // BOTON "BORRAR"
  2. begin
  3. if MessageDLG('Desea borrar?...',mtWarning,[mbYes,mbNo],0) = 6 then
  4. begin
  5. Datamodule1.ZQuery5.Close;
  6. Datamodule1.ZQuery5.SQL.Text:='DELETE * FROM "personas" WHERE codigo = '+ QuotedStr(Datamodule1.ZQuery1.FieldByName('codigo').AsString);
  7. Datamodule1.ZQuery5.ExecSQL;
  8. end;
  9. end;

Ojo, lo hice el vuelo sin probarlo, o sea, de memoria, asi que puede fallar.

 

Saludos.


  • 0

#3 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 mensajes

Escrito 24 mayo 2016 - 03:24

Pues así es Enecumene, pero me rompe todo los esquemas. No entiendo como da problemas, al usar la unidad "Windows" con el procedimiento DrawColumnCell. En otra unidad uso "Windows" para salir del programa así de esa manera y todo ok.

 

Tengo que cambiarlo en el procedure de permite salir del programa a la nueva opción de MessageDlg. Aún no entiendo la 

diferencias entre ambas a excepción de usar librerias distintas.

 

Buscaré la sintaxis y códigos con MessageDlg a ver si encuentra todas las opciones de configuración de mensajes.

 

 

Un saludo


  • 0




IP.Board spam blocked by CleanTalk.